我将Symfony 3.3与JMSI18nRoutingBundle一起使用。通过JMSI18nRoutingBundle在URL中的Symfony区域设置
该包将用户区域设置放在路由前面。这工作正常,直到我必须登录或注销,这些不起作用。
我总是得到以下错误:
Unable to find the controller for path "/en/admin/logout". The route is wrongly configured.
这是覆盖登录/注销我的security.yml的一部分:
security:
firewalls:
main:
anonymous: ~
pattern: ^.*/admin
form_login:
login_path: /{_locale}/admin/login
check_path: /{_locale}/admin/login
[...]
logout:
path: /{_locale}/admin/logout
target: /{_locale}/admin/login
access_control:
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
对于login_path,check_path,等我有也试过而不是{_locale},。*,并且只是一个斜杠(/),但这些都不起作用。
管理,注销在我的routing.yml配置:
admin-logout:
path: /admin/logout
它被作为树枝渲染得当,使用路径时(“管理 - 退出”),我得到一个URL与它的语言环境,但是当我点击它时,它只是再次显示上述错误消息。 登录也不起作用,但我可以显示登录页面,但输入凭据后,它只是刷新页面而不登录。
任何人都有任何想法如何让登录/注销重新工作?
编辑:
感谢nifr我可以解决这个问题,我已经使用了路由名称,而不是在security.yml的路径,这是我结束了:
security:
firewalls:
main:
anonymous: ~
pattern: admin
form_login:
login_path: admin-login
check_path: admin-login
[...]
logout:
path: admin-logout
target: admin-login
[...]
我没有在我的routing.yml中改变什么,因为JMSI18nRoutingBundle已经放区域占位符的路线的前方(如果你把{} _locale那里,你最终喜欢路线:/ EN/en/admin /)
非常感谢!这是我需要的。 我没有更改我的routing.yml中的任何内容,但是在我的security.yml中使用了路由名(正如你所建议的那样),这就是所需要的 – Didier