2014-08-28 73 views
0

我需要重写防火墙来使用_locale。现在我有这个配置,除了一件事情,它工作正常。在login_check上,我正在丢失URL的_locale部分,然后重新路由到默认的语言环境。我如何修改它以在login_check中使用_locale?_locale在表单登录Symfony2

 client_firewall: 
     pattern: ^/client 
     anonymous: ~ 
     provider: clients 
     form_login: 
      login_path: /client/login 
      check_path: /client/login_check 
      username_parameter: login 
      password_parameter: password 
      default_target_path: /client/cabinet 
     logout: 
      intention:   logout 
      path:     /client/logout 
      target:    /
      success_handler:  ~ 
      invalidate_session: true 

回答

0

要使用本地化防火墙网址的工作,你平时用配置路线,而不是URL防火墙:

... 
form_login: 
    login_path: login 
    check_path: login_check 
    default_target_path: cabinet 
    ... 

然后在你的路由配置你只是本地化的URL:

... 
login: 
    path:  /{_locale}/login 
    defaults: { _controller: AcmeBundle:Controller:login } 

login_check: 
    path:  /{_locale}/login_check 
    defaults: { _controller: AcmeBundle:Controller:loginCheck } 

cabinet: 
    path:  /{_locale}/cabinet 
    defaults: { _controller: AcmeBundle:Controller:cabinet } 
... 
+0

非常感谢。你给我正确的方向。 – sergeda 2014-08-28 15:07:41

0

也许这样的事情应该工作。在您的security.yml:

form_login: 
    login_path: login 
    check_path: login_check 
    always_use_default_target_path: true 
    default_target_path: /client/cabinet 

,并在你的包的routing.yml check_path definie:

login: 
    pattern:/
    defaults: { ... } 

login_check: 
    pattern: /login_check 
+0

感谢您试图帮助,但这不起作用。 – sergeda 2014-08-28 14:44:10