Как добавить собственные теги контейнеров сервисов и как получить сервисы с тегами в symfony2? - PullRequest
6 голосов
/ 04 ноября 2011

Теперь я могу помечать службы, например: form.type witch сообщает компоненту форм, чтобы использовать эту службу в качестве типа формы.

Я не могу найти никакой документации по этому вопросу, как я могу определить свой собственный тег? И получить все услуги, которые помечены с ним? Или даже передать все теги с моими сервисами тегов в качестве аргумента другому сервису?

1 Ответ

10 голосов
/ 04 ноября 2011

ОК. Я нашел ответ, в основном теги обрабатываются классами, которые реализуют CompilerPassInterface Объекты прохода компилятора могут быть добавлены в файл bunlde (например: Symfony\Bundle\FrameworkBundle\FrameworkBundle см. Метод build)

У CompilerPass есть метод process witch получает ContainerBuilder в качестве аргумента.
ContainerBuilder имеет метод: findTaggedServiceIds, ведьма может использоваться для получения идентификаторов помеченных сервисов и выполнения любых действий с ними.

Для передачи результатов другомуДля этого необходимо определить пустой аргумент коллекции, и с помощью ContainerBuilder заменить этот аргумент на найденные идентификаторы службы.

например: Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\FormPass

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...