Symfony2.0.0在security.yml中获取语言环境



我使用symfony2.0.0。我没机会更新交响乐了。这是我的保障。yml

<>之前防火墙:主要:注销:真模式:. *http_basic:真匿名:真form_login:提供者:fos_userbundlelogin_path:/登录use_forward:真check_path:/login_check failure_path:/login_fail remember_me:关键:"lkjxd % 34 (lksdf; SDfsf"寿命:31536000路径:/域:~之前

如何为我的failure_path使用区域设置?尝试使用/% localale %/failure_path,但它总是返回en(我的默认语言环境)。它不能理解路由名。如果我使用路由的名称,例如login_fail它不工作(重定向像一个相对路径)。

这是我的路线。

<>之前login_fail:模式:/{_locale}/login_faildefault: {_controller: ContactbeeProfileBundle:Profile:dashboard, _locale: en}之前

有什么解决办法吗?

配置在DIC被编译之前加载,因为它可以从Request访问,您不能在配置中访问区域设置。

如果你不介意一个额外的重定向,你可以有一个动作,在认证失败后重定向用户到正确的路由:

namespace AcmeDemoBundleController;
use SymfonyBundleFrameworkBundleControllerController;
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 }

相关内容

  • 没有找到相关文章

最新更新