내 프로젝트의 경우 등록 후 사용자를 리디렉션해야합니다.Symfony2 FOSuserBundle 이벤트 REGISTRATION_COMPLETED이 (가) 트리거되지 않았습니다.
내 이벤트 리스너 :
services:
rs_user.registration_complet:
class: UserBundle\EventListener\RegistrationConfirmListener
arguments: [@router]
tags:
- { name: kernel.event_subscriber }
그리고 I :
namespace UserBundle\EventListener;
use FOS\UserBundle\FOSUserEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class RegistrationConfirmListener implements EventSubscriberInterface
{
private $router;
public function __construct(UrlGeneratorInterface $router)
{
$this->router = $router;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_CONFIRM => 'onRegistrationConfirm'
);
}
public function onRegistrationConfirm(GetResponseUserEvent $event)
{
$url = $this->router->generate('standard_user_registration_success');
$event->setResponse(new RedirectResponse($url));
}
}
내가 내 service.yml의 서비스로 등록 된 설명으로 그것을 달성하기 위해, 나는 EventListener
을 생성 내 RegistrationController 그것을 사용해야하지만 그것을 트리거하는 방법을 이해하지 못합니다. 내 registerAction
에서 여기 는 :
public function registerAction(Request $request)
{
$em = $this->get('doctrine.orm.entity_manager');
//Form creation based on my user entity
$user = new StandardUser();
$form = $this->createForm(RegistrationStandardUserType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$user ->setEnabled(true);
$em ->persist($user);
$em ->flush();
if ($user){
$dispatcher = $this->get('event_dispatcher');
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_CONFIRM);
}
}
return $this->render('UserBundle:Registration:register.html.twig', array(
'form' => $form->createView()
));
}
나는 주제도 내가 내 이벤트를 트리거하기 위해 ->dispatch()
함수에 전달할 필요가에 대한 Symfony2 documentation을 이해하지 않습니다.
Type error: Argument 1 passed to
UserBundle\EventListener\RegistrationConfirmListener::onRegistrationConfirm()
must be an instance of UserBundle\EventListener\GetResponseUserEvent,
instance of Symfony\Component\EventDispatcher\Event given
500 Internal Server Error - FatalThrowableError
내 나쁜,하지만 난 이미 오류를 가지고 그것을 시도 : 그것을 트리거하려면 당신의 편집에 맞도록
FOSUserEvents::REGISTRATION_CONFIRM
이벤트에게 편집을 파견 할 필요가, 당신은 당신의 서비스
tags
에 이벤트를 전달해야 내 게시물을 업데이트했습니다. (시간 낭비) 죄송합니다. – Gauthier이 (가) 업데이트 된 오류를 반영하도록 편집되었습니다. – skrilled
감사합니다. 업데이트 해 주셔서 감사합니다. 이벤트가 이제 귀하의 게시물에 설명 된대로 전달되지만 여전히 오류가 있습니다. 나는 그것을 파견하는 방법이 될 수 있다고 생각하지만 여전히, 나는 모른다. – Gauthier