Why is symfony2 not calling my event listeners?
php, symfony
Solution
The new event dispatcher doesn't know anything about the listeners set on another dispatcher.
In your controller, you need to access the `event_dispatcher` service. A Compiler Pass of the Framework Bundle attached all listeners to this dispatcher. To get the service, use the `Controller#get()` shortcut:
// ...
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class ChannelController extends Controller
{
public function createAction()
{
$dispatcher = $this->get('event_dispatcher');
// ...
}
}
Problem
I have a program with two bundles. One of them (CommonBundle) dispatches an event "common.add_channel", while a service on the other one (FetcherBundle) was supposed to be listening to it. On the profiler, I can see the event common.add_channel in the "Not Called Listeners" section. I don't get why symfony is not registering my listener. This is my action, inside `CommonBundle\Controller\ChannelController::createAction`: ``` $dispatcher = new EventDispatcher(); $event = new AddChannelEvent($entity); $dispatcher->dispatch("common.add_channel", $event); ``` This is my `AddChannelEvent`: ``` <?php namespace Naroga\Reader\CommonBundle\Event; use Symfony\Component\EventDispatcher\Event; use Naroga\Reader\CommonBundle\Entity\Channel; class AddChannelEvent extends Event { protected $_channel; public function __construct(Channel $channel) { $this->_channel = $channel; } public function getChannel() { return $this->_channel; } } ``` This was supposed to be my listener (FetcherService.php): ``` <?php namespace Naroga\Reader\FetcherBundle\Service; class FetcherService { public function onAddChannel(AddChannelEvent $event) { die("It's here!"); } } ``` And here's where I register my listener (services.yml): ``` kernel.listener.add_channel: class: Naroga\Reader\FetcherBundle\Service\FetcherService tags: - { name: kernel.event_listener, event: common.add_channel, method: onAddChannel } ``` What am I doing wrong? Why isn't symfony calling the event listener when I dispatch common.add_channel?