Я хочу знать, как правильно переопределить пошаговый контроллер регистрации FosUser в symfony 3.4.Я думаю, что документация не актуальна.Я попробовал несколько способов сделать это, но это не работает ... Вот моя последняя попытка ...
Сначала маршрутизация:
ma_fos_user_registration:
resource: "@MAUserBundle/Resources/config/routing/override/fos.yml"
prefix: /
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
, затем в моем каталоге приложений, это мой контроллер переопределения:
class RegistrationController extends BaseController
{
private $eventDispatcher;
private $formFactory;
private $userManager;
private $tokenStorage;
public function __construct(EventDispatcherInterface $eventDispatcher, FactoryInterface $formFactory, UserManagerInterface $userManager, TokenStorageInterface $tokenStorage)
{
parent::__construct($eventDispatcher, $formFactory, $userManager, $tokenStorage);
$this->eventDispatcher = $eventDispatcher;
$this->formFactory = $formFactory;
$this->userManager = $userManager;
$this->tokenStorage = $tokenStorage;
}
/**
* @param Request $request
*
* @return Response
*/
public function registerAction(Request $request)
{
//$response = parent::registerAction($request);
//dump($response);die();
// do custom stuff
$user = $this->userManager->createUser();
$user->setEnabled(true);
$user->addRole('ROLE_USER');// --> I want to add the ROLE_ADMIN for example.
$event = new GetResponseUserEvent($user, $request);
$this->eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$form = $this->formFactory->createForm();
$form->setData($user);
$form->handleRequest($request);
//dump($form);die();
if ($form->isSubmitted()) {
if ($form->isValid()) {
dump($form);die();
$event = new FormEvent($form, $request);
$this->eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$this->userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$url = $this->generateUrl('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$this->eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
$event = new FormEvent($form, $request);
$this->eventDispatcher->dispatch(FOSUserEvents::REGISTRATION_FAILURE, $event);
if (null !== $response = $event->getResponse()) {
return $response;
}
}
//return $response;
return $this->render('@FOSUser/Registration/register.html.twig', array(
'form' => $form->createView(),
));
}
...//Other function
}
Например, я пытаюсь добавить ROLE_ADMIN для какого-то пользователя, но когда я дам дамп для проверки, мой контроллер игнорируется ??Почему ??