我將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