Contenu connexe
Similaire à EventListener使いこなし術 - Symfony勉強会#10 (10)
EventListener使いこなし術 - Symfony勉強会#10
- 21. class BeforeFilterControllerListener
{
public function onKernelController(FilterControllerEvent
$event)
{
$c = $event->getController();
if (!is_array($c)) {
return;
}
$controller = $c[0];
!
if (method_exists($controller, 'before')) {
$controller->before($event->getRequest();
}
}
}
EventListenerクラス作成
コントローラー側に書く必要がないと感じませんか?
- 30. TutorialListener実装例1
class TutorialListener
{
public function onKernelRequest(GetResponseEvent $event)
{
if (HttpKernelInterface::MASTER_REQUEST !== $event-
>getRequestType()) {
return;
}
if (!$this->securityContext->getToken()) {
return;
}
!
$user = $this->securityContext->getToken()->getUser();
if ($this->doseNeedTutorial($user)) {
// チュートリアルのURLにリダイレクトするとか
$event->setResponse(new RedirectResponse('/tutorial',
302));
}
}
}
- 31. TutorialListener実装例2
class TutorialListener
{
public function onKernelRequest(GetResponseEvent $event)
{
if (HttpKernelInterface::MASTER_REQUEST !== $event-
>getRequestType()) {
return;
}
if (!$this->securityContext->getToken()) {
return;
}
!
$user = $this->securityContext->getToken()->getUser();
if ($this->doseNeedTutorial($user)) {
// sessionに状態を入れるとか
$this->session->set(’needTutorial’, true));
}
}
}