如何使用FOSJsRoutingBundle传递语言环境

时间:2015-04-29 07:31:44

标签: javascript symfony twig url-routing

我安装了FOSJsRouting但我的路线需要_locale参数。我怎么能在JS中做到这一点?有没有办法在js中获取语言环境?

在twig中,我可以app.request.attributes.get('_locale')但是在JS中,我找不到任何文档。

AJAX

$.ajax({
    type : 'get',
    url : Routing.generate('get_credits', {'_locale': app.request.attributes.get('_locale'), 'amount' : amount, 'monthNumber' : month }),
    beforeSend : function(){
    console.log('loading');
    },
    success: function(data){
    },
    error : function(){
    }
});

3 个答案:

答案 0 :(得分:5)

我通常做的是将语言环境设置为html标签属性

<html lang="{{ app.request.locale }}"> 

导致

<html lang="EN">

这对SEO也很有用,你总是可以通过调用

来获取JS中的语言环境
$('html').attr('lang');

答案 1 :(得分:0)

如果您的Js脚本在树枝上,您可以这样做:

var mylocale= "{{ app.request.attributes.get('_locale') }}"; // or {{ app.request.locale }}

$.ajax({
    type : 'get',
    url : Routing.generate('get_credits', {'_locale': mylocale, 'amount' : amount, 'monthNumber' : month }),
    beforeSend : function(){
    console.log('loading');
    },
    success: function(data){
    },
    error : function(){
    }
});

答案 2 :(得分:0)

您还可以使用master版本的FOSJsRoutingBundle,其中包含PR,可自动注入_locale参数。

使用以下内容更新您的composer.json文件

"friendsofsymfony/jsrouting-bundle": "dev-master"

并运行:

composer update friendsofsymfony/jsrouting-bundle

我不喜欢使用master版本的库,但这是目前最简单的解决方案。