質問

user_loggedというカスタムイベントを作成して、リスナーをそれらのイベントに添付できるようにします。

ユーザーがログインしたときはいつでもいくつかの機能を実行したいです。

役に立ちましたか?

解決

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 }
.

他のヒント

この答えは少し伸びる答え

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 / homepageventsubscriber.php

namespace AppBundle\EventSubscriber;
class HomePageEventSubscriber
{
    public function onCustomEvent($event)
    {
        var_dump($event->getCode());
    }
}
.

appbundle / event / 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);
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top