в основном то, что я пытаюсь сделать, - это создать новую форму входа на основе пользователя сонаты, которая является реализацией пользователя fos, используемой в электронной коммерции сонаты. Новая форма входа должна делать то же самое, что и исходная форма входа, но иметь другой макет.
Что я сделал:
- создал новый файл ветки
- добавил маршрутизацию:
m2m_partner:
resource: "@ApplicationSonataUserBundle/Resources/config/routing/partnerlogin.xml"
prefix: /partner
содержание:
<route id="m2m_partner_login" pattern="/login">
<default key="_controller">ApplicationSonataUserBundle:Partner:login</default>
</route>
-Добавлен новый брандмауэр в security.yml (очень похожий на тот, что в 'admin')
partner:
pattern: /partner(.*)
context: user
form_login:
provider: fos_userbundle
login_path: /partner/login
use_forward: false
check_path: /partner/login_check
failure_path: null
logout:
path: /partner/logout
invalidate_session: false
handlers: ['sonata.page.cms_manager_selector']
anonymous: true
switch_user: true
После этого, когда я ввожу правильные учетные данные, он регистрирует меня нормально, но когда я ввожу неверные учетные данные, он перенаправляет меня на /login вместо /partner/login с сообщением «неверные учетные данные». Как я могу это исправить? я что-то упускаю?
редактировать 1:
я проверил, как происходит вход в систему с правами администратора, и обнаружил, что действие формы переходит к другому контроллеру, чем обычный вход, который выглядит точно так же, как действие «проверить» пользователя fos:
public function checkAction()
{
throw new \RuntimeException('You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.');
}
я скопировал его на свой контроллер, и после этого все, что я получаю после отправки формы с неправильными учетными данными, это эта ошибка:
You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.