2014-01-06 47 views
3

我想他點擊註冊鏈接後,但我堅持重定向我的用戶,因爲在一個FilterUserResponseEventFosUserBundle重定向在FilterUserResponseEvent

RegistrationListenner.php

public static function getSubscribedEvents() 
{ 
    return array(
     FOSUserEvents::REGISTRATION_CONFIRMED => 'onRegistrationConfirmed', 
    ); 
} 


public function onRegistrationConfirmed(FilterUserResponseEvent $event) 
{ 
    $url = $this->router->generate('my_route', array('foo' => 'bar')); 
    $response = new RedirectResponse($url); 
    $event->setResponse(new RedirectResponse($url)); 
} 
沒有 setResponse方法

的services.xml

<service id="myapp.profile" class="MyApp\UserBundle\EventListener\ProfileListener"> 
     <tag name="kernel.event_subscriber"/> 
     <argument type="service" id="router" /> 
    </service> 

回答

5

爲此存在GetResponseUserEventREGISTRATION_CONFIRM事件,它要求一個響應:

public static function getSubscribedEvents() 
{ 
    return array(
      FOSUserEvents::REGISTRATION_CONFIRM => 'onRegistrationConfirm', 
    ); 
} 

public function onRegistrationConfirm(GetResponseUserEvent $event) 
{ 
    $url = $this->router->generate('my_route', array('foo' => 'bar')); 
    $response = new RedirectResponse($url); 
    $event->setResponse(new RedirectResponse($url)); 
} 
+0

哦,沒有看到的事件。謝謝! – Tib

+0

對我來說確認沒有打電話(我認爲是因爲確認使用電子郵件)。幫我 –

+0

什麼?當用戶點擊電子郵件中的確認鏈接並且在確認賬戶之前,該事件將被觸發。 –

0
在我的版本$事件

沒有setResponse()方法,但封裝RedirectResponse對象。

由於對象已經通過引用傳遞,所以可以使用setTargetUrl()更改RedirectResponse的目標url。

你可以做重定向這一行:

$event->getResponse()->setTargetUrl("http://panel.it-strategy.fr"))); 
相關問題