user_logged
という名前のカスタムイベントを作成して、それらのイベントにリスナーを付けることができます。私は、ユーザーがログインしていたときに、いくつかの機能を実行します。symfony2でカスタムイベントを作成する方法
35
A
答えて
65
はSymfony\Component\EventDispatcher\Event
を拡張するクラスを作成します。
その後、イベントを送出するイベントディスパッチャのサービスを使用します。
$eventDispatcher = $container->get('event_dispatcher');
$eventDispatcher->dispatch('custom.event.identifier', $event);
あなたはそうのようなイベントリスナサービスを登録することができます
tags:
- { name: kernel.event_listener, event: custom.event.identifier, method: onCustomEvent }
19
この答えは少しanswerを拡張しています。
services.yml
custom.event.home_page_event:
class: AppBundle\EventSubscriber\HomePageEventSubscriber
tags:
- { name: kernel.event_listener, event: custom.event.home_page_event, method: onCustomEvent }
AppBundle/EventSubscriber/HomePageEventSubscriber.php
namespace AppBundle\EventSubscriber;
class HomePageEventSubscriber
{
public function onCustomEvent($event)
{
var_dump($event->getCode());
}
}
AppBundle /イベント/ HomePageEvent.php
namespace AppBundle\Event;
use Symfony\Component\EventDispatcher\Event;
class HomePageEvent extends Event
{
private $code;
public function setCode($code)
{
$this->code = $code;
}
public function getCode()
{
return $this->code;
}
}
どこでもあなたが自宅で例えば、希望ページコントローラ
use AppBundle\Event\HomePageEvent;
// ...
$eventDispatcher = $this->get('event_dispatcher');
$event = new HomePageEvent();
$event->setCode(200);
$eventDispatcher->dispatch('custom.event.home_page_event', $event);
+0
素晴らしい!非常に役立ちます! – iamjc015
+0
@JCFraneいつでも歓迎! –
さらに、ここに詳細があります:http://symfony.com/doc/current/components/event_dispatcher/introduction.html – gview
確かに、これは始めるには簡単な方法です。 – Lusitanian
優れた答え!今、唯一の質問は、カスタムイベントを派遣するのに最適な場所はどこですか、おそらくサービスですか? – Nico