I'm building an app in Symfony2 that has a social-driven aspect (many actions a user performs on the site will show up in a "news feed"-style list for others to view). I've determined that the sf2 event dispatcher/listener system is the best way to handle this, but I've run into something of a snag in trying to configure my listener to handle many different events.
The (now outdated) documentation I've found in my searches seems to indicate that at one point, event listeners could register on multiple events, but the code has been refactored, and now the configuration looks something like this:
config.yml:
services: social.listener: class: F\Q\C\N\SocialEventListener tags: - { name: kernel.listener, event: onSocialShare }
Is there any way to either:
event: [onSocialShare, onSocialFriend, onSocialCreate]
works, but that feels like it will quickly get ugly and unmaintainable, clogging up my config file with potentially dozens of social eventsThanks in advance.
We can add multiple event listeners for different events on the same element. One will not replace or overwrite another. In the example above we add two extra events to the 'button' element, mouseover and mouseout.
We can invoke multiple functions on a single event listener without overwriting each other. To do this we simply call the addEventListener() method more than once with a different function. In the example above, we add another event listener for the same event on the same button.
Only one event handler can be assigned for every event in an element. If needed the handler can be replaced by assigning another function to the same property. Below we show how to set a simple greet() function for the click event using the onclick property.
Word back from the symfony-users google group (thread here) is that the appropriate way to do this is by adding several tags:
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 }
So, it looks like currently, there is no good way of adding event subscriptions from listener code. Oh well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With