2014-08-28 80 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