как переопределить fos контроллер регистрации пользователя symfony 3.4 - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу знать, как правильно переопределить пошаговый контроллер регистрации 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 для какого-то пользователя, но когда я дам дамп для проверки, мой контроллер игнорируется ??Почему ??

...