2014-07-14 47 views
0

我想按照http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html中的說明創建自定義路由裝入器。 我所要做的就是讀取從xml文件(不是「symfony xml」格式)讀取路由並創建相應的路由集合。但是我想使用'@'指令來做到這一點。如:獲取symfony2自定義路由器中的file_locator服務

xmlRoutes: 
    resource: '@FooBarBundle/Resources/routes.xml' 

但爲了解決routes.xml的路徑,我需要container.is中的'file_locator'服務,它可以訪問自定義路由器類中的服務。如果不能,我如何創建一個symfony \ Component \ Config \ FileLocator來解決該路徑?

回答

0

是的,你可以訪問file_locator,因爲它是service。你需要做的是讓你的custom_route_loader服務本身(我不讀你鏈接的食譜,但我敢肯定,他們會建議將其定義爲服務),並注入file_locator服務。

所以基本上你會做這樣的事情

#config.yml 
[...] 
services: 
    yourbundlename.custom_route_loader: 
    class: Path\To\Your\Bundle\CustomRouteLoader 
    arguments: [ @file_locator ] 

而進入你CustmRouteLoaderClass

#Path\To\Your\Bundle\CustomRouteLoader 
class CustomRouteLoader 
{ 
    public function __construct(Symfony\Component\HttpKernel\Config\FileLocator $file_locator) { 
    $this->file_locator = $file_locator; 
    [...] 
    } 
    [...] 
} 
相關問題