Php Symfony 3-按装入器类从捆绑包动态添加路由

Php Symfony 3-按装入器类从捆绑包动态添加路由,php,symfony,Php,Symfony,这里是Symfony framework的新手。我正试图通过Cookbook部分,使路由自动加载在我的包中工作,但没有成功。以下是所有与本主题相关的文件: 加载器: namespace Notimeo\CoreBundle\Routing; use Symfony\Component\Config\Loader\Loader; use Symfony\Component\Routing\RouteCollection; class AdvancedLoader extends Loader

这里是Symfony framework的新手。我正试图通过Cookbook部分,使路由自动加载在我的包中工作,但没有成功。以下是所有与本主题相关的文件:

加载器:

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;
    }
}
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');
    }
}
notimeo_core_routes:
    resource: .
    type: advanced_extra
# homepage
homepage:
    path: /
    defaults:
        _controller: CoreBundle:Base:index
services:
    routing.loader.advanced_loader:
        class: Notimeo\CoreBundle\Routing\AdvancedLoader
        tags:
            - { name: routing.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;
    }
}
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');
    }
}
notimeo_core_routes:
    resource: .
    type: advanced_extra
# homepage
homepage:
    path: /
    defaults:
        _controller: CoreBundle:Base:index
services:
    routing.loader.advanced_loader:
        class: Notimeo\CoreBundle\Routing\AdvancedLoader
        tags:
            - { name: routing.loader }
src/Notimeo/CoreBundle/Resources/config/routing.yml:

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;
    }
}
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');
    }
}
notimeo_core_routes:
    resource: .
    type: advanced_extra
# homepage
homepage:
    path: /
    defaults:
        _controller: CoreBundle:Base:index
services:
    routing.loader.advanced_loader:
        class: Notimeo\CoreBundle\Routing\AdvancedLoader
        tags:
            - { name: routing.loader }
src/Notimeo/CoreBundle/Resources/config/import\u routing.yml:

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;
    }
}
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');
    }
}
notimeo_core_routes:
    resource: .
    type: advanced_extra
# homepage
homepage:
    path: /
    defaults:
        _controller: CoreBundle:Base:index
services:
    routing.loader.advanced_loader:
        class: Notimeo\CoreBundle\Routing\AdvancedLoader
        tags:
            - { name: routing.loader }
src/Notimeo/CoreBundle/Resources/config/services.yml:

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;
    }
}
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');
    }
}
notimeo_core_routes:
    resource: .
    type: advanced_extra
# homepage
homepage:
    path: /
    defaults:
        _controller: CoreBundle:Base:index
services:
    routing.loader.advanced_loader:
        class: Notimeo\CoreBundle\Routing\AdvancedLoader
        tags:
            - { name: routing.loader }
正在获取
未找到“GET/”的路由
错误

(使用Symfony 3)


更新

嗯。。。如果我移动src/Notimeo/CoreBundle/Resources/config/routing.yml:

app/config/routing.yml


但是。。。为什么?为什么我不能将所有内容放在我的包中?

您可以将所有内容放在
src/Notimeo/CoreBundle/Resources/config/routing.yml
中,只需确保将其包含在
app/config/routing.yml

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

_