2016-04-07 29 views
0

來自Symfony框架的新手在這裏。我試圖去低谷How to Create a custom Route Loader Cookbook部分,並使路由自動加載在我的捆綁工作,但沒有成功。這裏是所有與此主題相關文件:Symfony 3 - 通過Loader類動態添加路由捆綁類

裝載機:

namespace Notimeo\CoreBundle\Routing; 

use Symfony\Component\Config\Loader\Loader; 
use Symfony\Component\Routing\RouteCollection; 

class AdvancedLoader extends Loader 
{ 
    public function load($resource, $type = null) 
    { 
     $collection = new RouteCollection(); 

     $resource = '@NotimeoCoreBundle/Resources/config/import_routing.yml'; 
     $type  = 'yaml'; 

     $importedRoutes = $this->import($resource, $type); 

     $collection->addCollection($importedRoutes); 

     return $collection; 
    } 

    public function supports($resource, $type = null) 
    { 
     return 'advanced_extra' === $type; 
    } 
} 

DependencyInjection:

namespace Notimeo\CoreBundle\DependencyInjection; 

use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; 
use Symfony\Component\HttpKernel\DependencyInjection\Extension; 
use Symfony\Component\DependencyInjection\ContainerBuilder; 
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; 
use Symfony\Component\Config\FileLocator; 

class CoreExtension extends Extension implements PrependExtensionInterface 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
    } 

    public function prepend(ContainerBuilder $container) 
    { 
     $loader = new YamlFileLoader(
      $container, 
      new FileLocator(__DIR__.'/../Resources/config') 
     ); 
     $loader->load('services.yml'); 
    } 
} 

的src/Notimeo/CoreBundle /資源/配置/ routing.yml中:

notimeo_core_routes: 
    resource: . 
    type: advanced_extra 

的src/Notimeo/CoreBundle /資源/配置/ import_routing.yml:

# homepage 
homepage: 
    path:/
    defaults: 
     _controller: CoreBundle:Base:index 

的src/Notimeo/CoreBundle /資源/配置/ services.yml:

services: 
    routing.loader.advanced_loader: 
     class: Notimeo\CoreBundle\Routing\AdvancedLoader 
     tags: 
      - { name: routing.loader } 

獲取No route found for "GET /"錯誤...

(使用Symfony 3)


UPDATE

嗯...它的工作,如果我將移動SRC的內容/ Notimeo/CoreBundle /資源/配置/ routing.yml中:

應用程序/配置/routing.yml

但是...爲什麼?爲什麼我無法將所有內容放入我的包中?

回答

2

,你可以把所有的內容src/Notimeo/CoreBundle/Resources/config/routing.yml只是確保將其納入app/config/routing.yml

只需添加以下行app/config/routing.yml

_

my_custom_route: 
    resource: "@NotimeoCoreBundle/Resources/config/routing.yml"