例如,我有這樣的腳本:FosJsRoutingBundle與「_locale」
Routing.generate('_moderation_profile_confirm',{'id':objectId,'_locale':'en'})
是正確的,但是當我刪除「_locale」參數,它給我的錯誤,如「_locale」必須設置。 我的路由名稱_moderation_profile_confirm包含'_locale'前綴,但我怎樣才能發送路由管理器的'當前'區域設置?
例如,我有這樣的腳本:FosJsRoutingBundle與「_locale」
Routing.generate('_moderation_profile_confirm',{'id':objectId,'_locale':'en'})
是正確的,但是當我刪除「_locale」參數,它給我的錯誤,如「_locale」必須設置。 我的路由名稱_moderation_profile_confirm包含'_locale'前綴,但我怎樣才能發送路由管理器的'當前'區域設置?
我supouse您在樹枝模板:
你可以使用這個速記,並得到當前區域:
Routing.generate('_moderation_profile_confirm',{'id':objectId,'_locale':'{{ app.session.locale }} '})
我複製到這裏了迴應,我在這裏提出 https://stackoverflow.com/a/35223108/279326
要設置請求區域設置到您對Routing.generate的所有調用,您可以重寫此方法並在每次調用中添加{{app.request.locale}}參數。以下腳本必須在樹枝模板中執行,幷包含路由腳本。
<!-- Include JSRouting libs & exposed routes -->
<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
<script>
$(function() {
// change name of initial method
Routing.generateImpl = Routing.generate;
// override generate fonction by adding a default _locale from request locale
Routing.generate = function (url, params) {
var paramsExt = {};
if (params) {
paramsExt = params;
}
if (!paramsExt._locale){
paramsExt._locale = '{{ app.request.locale }}';
}
return Routing.generateImpl(url, paramsExt);
}
})
</script>
現在你可以透明地使用Routing.generate沒有關於_locale PARAM無憂!
// in any JS file
var url = Routing.generate('mypath');
var url2 = Routing.generate('another path', {param: 1});
要澄清代碼,可以將js文件中的前一個腳本隔離開來。爲此,必須定義一個全局變量。
<!-- for exemple in the <head> of the page -->
<script>
var REQUEST_LOCALE = '{{ app.request.locale }}';
</script>
所以在腳本可以使用REQUEST_LOCALE
// this line
paramsExt._locale = '{{ app.request.locale }}';
// has to be replaced by
paramsExt._locale = REQUEST_LOCALE;
我在一個純JavaScript文件,我只是想知道,如果這個區域設置選項是先決條件。 – ferdinandfly 2012-07-19 08:13:53