Подтвердить что ты не робот

Прослушивание нескольких событий с одним слушателем?

Я создаю приложение в Symfony2, которое имеет социальный аспект (многие действия, которые пользователь выполняет на сайте, будут отображаться в списке "лента новостей" для просмотра другими). Я определил, что система диспетчера/прослушивателя событий sf2 - лучший способ справиться с этим, но я столкнулся с чем-то вроде того, что пытался настроить моего слушателя для обработки множества различных событий.

(теперь устаревшая) документация, найденная в моих поисках, кажется, указывает, что в какой-то момент слушатели событий могли регистрироваться на нескольких событиях, но код был реорганизован, и теперь конфигурация выглядит примерно так:

config.yml:

services:
  social.listener:
    class: F\Q\C\N\SocialEventListener
    tags:
      - { name: kernel.listener, event: onSocialShare }

Есть ли какой-либо способ:

  • Легко передавать несколько событий (что-то вроде event: [onSocialShare, onSocialFriend, onSocialCreate] работает, но похоже, что он быстро станет уродливым и неподъемным, забив мой файл конфигурации потенциальными десятками социальных событий
  • Определите событие, которое я хочу подписаться с кодом (как это было сделано ранее)
  • Или, возможно, другой, лучший вариант, о котором я еще не думал.

Спасибо заранее.

4b9b3361

Ответ 1

Слово обратно из группы google-группы symfony (нить здесь) заключается в том, что подходящий способ сделать это - добавить несколько тегов:

services:
  social.listener:
    class: F\Q\C\N\SocialEventListener
    tags:
      - { name: kernel.listener, event: onSocialShare }
      - { name: kernel.listener, event: onSocialFriend }
      - { name: kernel.listener, event: ... etc }

Итак, похоже, что в настоящее время нет хорошего способа добавления подписки на события из кода слушателя. О, хорошо.