我使用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 }