Jak utworzyć własne Zdarzenie w symfony2
Chcę tworzyć niestandardowe zdarzenia o nazwie user_logged
, aby móc dołączyć moich słuchaczy do tych zdarzeń.
Chcę wykonać kilka funkcji za każdym razem, gdy użytkownik się zaloguje.
38
Author: Vladimir Kovpak, 2012-07-26
2 answers
Tworzy klasę, która rozszerza Symfony\Component\EventDispatcher\Event
.
Następnie użyj usługi dyspozytora zdarzeń, aby wysłać Zdarzenie:
$eventDispatcher = $container->get('event_dispatcher');
$eventDispatcher->dispatch('custom.event.identifier', $event);
Możesz zarejestrować usługę słuchacza zdarzeń w następujący sposób:
tags:
- { name: kernel.event_listener, event: custom.event.identifier, method: onCustomEvent }
74
Author: Lusitanian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-04 17:13:18
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-04 17:13:18
Ta odpowiedź jest trochę Rozszerzona ODPOWIEDŹ.
Usługi.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 / 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;
}
}
Gdziekolwiek chcesz, na przykład w kontrolerze strony głównej
use AppBundle\Event\HomePageEvent;
// ...
$eventDispatcher = $this->get('event_dispatcher');
$event = new HomePageEvent();
$event->setCode(200);
$eventDispatcher->dispatch('custom.event.home_page_event', $event);
26
Author: Vladimir Kovpak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:51
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:51