1
すべてのイベントを名前プレフィックスで聴くことは可能ですか?Symfony EventDispatcherを使ってイベント名プレフィックスでイベントを購読する
たとえば、私たちはイベントkernel.componentName.eventName
持って、私はそのような接頭辞kernel.componentName.*
か何かで任意のイベントに耳を傾けることはできますか?
すべてのイベントを名前プレフィックスで聴くことは可能ですか?Symfony EventDispatcherを使ってイベント名プレフィックスでイベントを購読する
たとえば、私たちはイベントkernel.componentName.eventName
持って、私はそのような接頭辞kernel.componentName.*
か何かで任意のイベントに耳を傾けることはできますか?
これは複数の方法で行うことができます。それらのうちの1つは、引数なしでEventDispatcher#getListeners
を呼び出し、kernel.componentName.
で始まりすべてを1つずつ購読するすべてのイベント名のリストを取得することです。
私はもっと簡単な方法はEventDispatcher
を拡張することだと思います。
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\Event;
class MyEventDispatcher extends EventDispatcher
{
protected function doDispatch($listeners, $eventName, Event $event)
{
// add logic here
if (strpos($eventName, 'kernel.componentName.') === 0) {
// do something, like call another listener or a callback
}
parent::doDispatch($listeners, $eventName, $event);
}
}