Я работаю с Symfoyn 3.4 lts и попытался переопределить действие FOS User Bundle loginAction.
PS: с Symfony 3.4 наследование комплекта устарело,
поэтому для переопределения действия просто создайте действие с тем же маршрутом.
Итак, сначала я создал пакет, который я назвал src / MyVendor / MyVendorFOSUserBundle
во-вторых, я скопировал SecurityController.php из vendor / в свой пакет Controller / и я поставил Route Decorator над loginAction, но у меня возникает проблема при отправке формы входа => Недопустимый токен CSRF:
по отладке я считаю, что $ tokenManager не вводится в контроллер, поэтому он принимает нулевое значение:
В этом коде я только что добавил декоратор @Route и расширяет BaseController до скопированного Contoller.
#src/MyVendor/MyVendorFOSUserBundle/Controller/SecurityController.php:
class SecurityController extends BaseController
{
private $tokenManager;
public function __construct(CsrfTokenManagerInterface $tokenManager = null)
{
$this->tokenManager = $tokenManager;
}
/**
* @param Request $request
* @return Response
* @Route("/login")
*/
public function loginAction(Request $request)
{ ... }
Итак, чтобы попытаться исправить эту проблему, я попытался добавить имя атрибута в @Route Decorator и сохранил то же имя маршрута, что и в FOS User Bundle, но в этом случае исполняемый пакет Controller of FOS User и мой новый контроллер был проигнорирован (я проверяю это, помещая die ('test') в конструктор контроллера)
Вопрос Как решить, как правильно переопределить это действие?