symfony2.0.0在security.yml中获取区域设置

symfony2.0.0在security.yml中获取区域设置,symfony,symfony-2.0,Symfony,Symfony 2.0,我正在使用symfony2.0.0。我没有机会更新symfony。 这是我的安全 firewalls: main: logout: true pattern: .* http_basic: true anonymous: true form_login: provider: fos_userbundle login_path: /lo

我正在使用symfony2.0.0。我没有机会更新symfony。 这是我的安全

firewalls: main: logout: true pattern: .* http_basic: true anonymous: true form_login: provider: fos_userbundle login_path: /login use_forward: true check_path: /login_check failure_path: /login_fail remember_me: key: "lkjxd%34(lksdf;SDfsf" lifetime: 31536000 path: / domain: ~ 防火墙: 主要内容: 注销:正确 模式:* http_basic:true 匿名:是的 表格(u)登入: 提供商:fos_用户包 登录路径:/login 使用_forward:true 检查路径:/login\u检查 失败路径:/login\u失败 记住我: 关键字:“lkjxd%34(lksdf;SDfsf” 寿命:31536000 路径:/ 域:~ 如何为失败路径使用区域设置。尝试使用/%locaale%/failure\u路径,但它始终返回en(我的默认区域设置)。它不理解路由名称。如果使用路由名称,例如登录失败,则无法工作(像相对路径一样重定向)

这是我的路线

login_fail: pattern: /{_locale}/login_fail defaults: { _controller: ContactbeeProfileBundle:Profile:dashboard, _locale: en } 登录失败: 模式:/{u locale}/login\u失败 默认值:{u控制器:ContactbeeProfileBundle:Profile:dashboard,{u区域设置:en}
有什么想法可以解决吗?

在实际处理请求之前,在编译DIC之前加载配置,因为可以从
请求中访问该配置,您无法访问配置中的语言环境

如果您不介意一个额外的重定向,您可以执行一个操作,在身份验证失败后将用户重定向到正确的路由:

namespace Acme\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class SecurityController extends Controller {
    public function failedAction() {
        return $this->redirect($this->generateUrl('login_fail_localized'), [
            'locale' => $this->getRequest()->getLocale()
        ]);
    }
}
设置故障路径以匹配其路径:

# routing.yml
login_fail:
    pattern: /login_fail
        defaults: { _controller: AcmeDemoBundle:Security:failed }

login_fail_localized:
    pattern: /{locale}/login_fail
        defaults: { _controller: ContactbeeProfileBundle:Profile:dashboard }

谢谢,伙计。我使用了所有前缀为:{locale}/的路由。这就是为什么我得到locale=login\u fail。你的想法很好也很简单。谢谢。但奇怪的是,我不能在security.yml中使用路由名称。可能是因为我的版本2.0.0)。我在symfony 3.0中也有这个问题,有解决方案吗?我很久以前就有了。但正如我所记得的,下面的第一个答案解决了我的问题。