访问/login
时出错:
找不到“GET / login”
的路线
当我尝试访问/en/login
时重定向我登录但我收到同样的错误。
在我的routing.yml中,我有:
login:
pattern: /{_locale}/login
defaults: { _controller: miomioBundle:Security:login}
requirements:
_locale: es|en|de
options:
expose: true
答案 0 :(得分:0)
这听起来像你有两个不同的问题。
路由/登录不存在。您已经在/ es / login,/ en / login和/ de / login之上设置了三条路线,但没有设置/登录。
您必须拥有一些访问控制设置,不允许上述三条路由是未经身份验证的用户访问,因此您将被重定向到/ login进行身份验证...但如第1点所述路由确实不存在。
要解决第1点,您实际上需要设置一个处理登录表单的路径。请参阅Symfony文档了解分步方法:http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form
对于第2点,您需要在security.yml文件中设置一些访问控制,以允许用户无需登录即可访问您的登录页面:
access_control:
- { path: ^/es/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/en/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/de/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
您必须已拥有如下所示的访问控制,否则您的登录页面将在无限循环中崩溃:
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
我必须说,如果它只是一个简单的登录表单,那么通过坚持使用1个登录表单并使用翻译处理标签和登录文本可以更好地服务。 http://symfony.com/doc/master/book/translation.html
答案 1 :(得分:0)
查看JMSTranslation Bundle以及JMSI18nRoutingBundle可能对您更感兴趣的内容。 JMSI18nRoutingBundle允许您指定路由在config.yml文件中的工作方式。
如果您希望您的URL使用默认语言环境进行/登录,您可以设置如下内容:
jms_i18n_routing:
default_locale: en
locales: [de, en]
strategy: prefix_except_default
但是,如果您希望您的网址始终包含区域设置,例如:en / login或de / login,您需要将stratagy参数更改为“prefix”
jms_i18n_routing:
default_locale: en
locales: [en, de]
strategy: prefix