Как сказать Symfony загрузить мою пользовательскую конфигурацию routing.yml

Я пытаюсь добиться этого
http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html#more-advanced-loaders

Мне нужна маршрутизация пакета, чтобы автоматически активировать себя, когда пакет зарегистрирован

поэтому я создал этот файл в путь

src/Gabriel\AdminPanelBundle\Routing\AdvancedLoader.php

с содержанием

<?php
//namespace Acme\DemoBundle\Routing;
namespace Gabriel\AdminPanelBundle\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 = '@GabrielAdminPanelBundle/Resources/config/import_routing.yml';
$type = 'yaml';

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

$collection->addCollection($importedRoutes);

return $collection;
}

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

Я скопировал эту конфигурацию

gabriel_admin_panel:
resource: "@GabrielAdminPanelBundle/Controller/"type:     annotation
prefix:   /superuser

от

/app/config/routing.yml

и вставил его в свой собственный файл конфигурации

/src/Gabriel/AdminPanelBundle/Resources/config/import_routing.yml

Эта проблема:

Symfony2 полностью игнорирует мой файл AdvancedLoader.php, я могу поставить любой
синтаксическая ошибка в этом, и сайт даже не выдаст ошибку, также
router: debug не показывает маршруты, которые определены внутри
Комплектация, если я не переместлю конфигурацию обратно в исходный файл router.yml.

PS: очистка кеша ничего не меняет

Редактировать: когда я добавляю сервис и ресурс, появляется эта ошибка

FileLoaderImportCircularReferenceException: круговая ссылка
обнаружено в «/app/config/routing_dev.yml»(«/app/config/routing_dev.yml»> «/app/config/routing.yml»> «.»>
«@ GabrielAdminPanelBundle / Controller /»>
«/App/config/routing_dev.yml»).

3

Решение

Похоже, вы могли пропустить некоторые шаги в процессе.

Первый: вы определили услугу?

services:
gabriel.routing_loader:
class: Gabriel\AdminPanelBundle\Routing\AdvancedLoader
tags:
- { name: routing.loader }

Обратите внимание на тег. Как сказано в документации:

Обратите внимание на тег routing.loader. Все сервисы с этим тегом будут
помечены как потенциальные загрузчики маршрутов и добавлены в качестве специализированных маршрутизаторов
DelegatingLoader.

Второе, но очень важное, потому что, как говорится в документации, если бы вы не добавили эти строки, ваш загрузчик маршрутизации не был бы вызван:

# app/config/routing.yml
Gabriel_Extra:
resource: .
type: advanced_extra

Важной частью здесь является ключ типа. Его значение должно быть «advanced_extra» в вашем случае. Это тип, который ваш AdvancedLoader поддерживает, и это обеспечит вызов метода load (). Ключ ресурса незначителен для AdvancedLoader, поэтому он установлен на «.»

Я думаю, что это будет загружено сейчас.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]