带有'_locale'的FosJsRoutingBundle

时间:2012-07-11 12:56:38

标签: symfony fosuserbundle

例如,我有一个这样的脚本:

 Routing.generate('_moderation_profile_confirm',{'id':objectId,'_locale':'en'})

是正确的,但当我删除'_locale'参数时,它会向我发送错误,例如'_locale'必须设置。 我的路由名称_moderation_profile_confirm包含一个'_locale'前缀但是如何为路由管理器发送'当前'语言环境?

2 个答案:

答案 0 :(得分:0)

我支持你在twig模板中:

您可以使用此简写并获取当前区域设置:

Routing.generate('_moderation_profile_confirm',{'id':objectId,'_locale':'{{ app.session.locale }} '})

答案 1 :(得分:0)

我在这里复制我在这里提出的回复 https://stackoverflow.com/a/35223108/279326

要将请求区域设置设置为您对Routing.generate的所有调用,您可以覆盖此方法并在每次调用中添加{{app.request.locale}}参数。必须在twig模板中执行以下脚本,并在包含路由脚本之后执行。

// in any JS file
var url = Routing.generate('mypath');
var url2 = Routing.generate('another path', {param: 1});

现在您可以透明地使用Routing.generate而无需担心_locale参数!

<!-- for exemple in the <head> of the page -->
<script>
    var REQUEST_LOCALE = '{{ app.request.locale }}';
</script>

为了澄清代码,可以在js文件中隔离以前的脚本。为此,必须定义一个全局变量。

// this line
paramsExt._locale = '{{ app.request.locale }}';
// has to be replaced by
paramsExt._locale = REQUEST_LOCALE;

在脚本中你可以使用REQUEST_LOCALE

C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\