В настоящее время я использую FOSUserBundle в своем проекте на основе Symfony 3.4. У нас запланированы некоторые изменения внешнего интерфейса, и я хочу интегрировать форму входа в стандартный шаблон страницы, чтобы незарегистрированные пользователи могли входить в систему, где бы они ни находились в приложении.
В моем файле шаблона я вызываю:
{{ render(controller('FOSUserBundle:Security:login')) }}. Это правильно отображает форму входа на соответствующих страницах.
Однако у меня есть две проблемы, которые я не могу понять, как преодолеть...
Если пользователь вводит неверные учетные данные, как я могу вернуть пользователя на страницу, на которой он был, а не на маршрут /login?
Как я могу перехватить сообщение об ошибке (неверные учетные данные и т. д.)? Я хотел бы сделать это флэш-сообщением, а затем отобразить его в другом месте основного шаблона.
С удовольствием предоставим дополнительную информацию, если потребуется.
т2т




Вы можете создать прослушиватель событий на «onAuthenticationFailure». Вы получите запрос и реферера.
В твоем случае; вам нужно создать пользовательскую страницу входа.
Для этого;
1- Создайте свой собственный SecurityController.php. Затем скопируйте метод «loginAction» и «renderLogin» из оригинального friendsofsymfony/user-bundle/SecurityController.php SecurityController, вставьте в него и добавьте путь /login к loginAction.
2- Создайте свой собственный login.html.twig. Затем скопируйте содержимое login_content.html.twig из friendsofsymfony/user-bundle/Resources/Security/login_content.html.twig и вставьте в свой собственный.
3- Измените возврат renderLogin на свой собственный login.html.twig.
После этих шагов вы можете изменить все, что хотите. Если вы хотите изменить маршрут после неправильных учетных данных, проверьте переменную $error и выполните перенаправление.
Извините, это не то, что я имел в виду - я уже переопределяю эти файлы, и это не решение.
Это было почти то, что мне было нужно! Спасибо!