2012-03-17 12 views
5

私はExposeTranslationBundleを使用していますし、JMSI18nRoutingBundle翻訳JavaScriptにを公開)(ルートJavaScriptにを公開)。これは私の<head>タグの一部です:これらのアセットをSymfony2でどのように組み合わせるのですか?

{% javascripts filter='?yui_js' output='js/app.js' 
     '../app/Resources/public/js/jquery-*.js' 
     '../app/Resources/public/js/jquery/*' 
     '../app/Resources/public/js/app.js' 
     'bundles/fosjsrouting/js/router.js' 
     'bundles/bazingaexposetranslation/js/translation.js' %} 
     <script src="{{ asset_url }}" ></script> 
    {% endjavascripts %} 

    <!-- ExposeTranslationBundle and JMSI18nRoutingBundle --> 
    <script src="{{ path('fos_js_routing_js', 
     {"callback": "fos.Router.setData"}) }}"></script> 
    <script src="{{ url('bazinga_exposetranslation_js') }}"></script> 

は最初asseticとどのように最後の2つの<script>輸入を組み合わせることが可能ですか? JavaScriptのファイルFOSJSRoutingがコントローラによって生成されるので、それは不可能です

+0

javascriptブロックは1つのファイルにあり、最後の2行は別のファイルにありますか? – Axxiss

+0

@Axxiss最後の2行は、サードパーティのバンドルから来たものです。 – Polmonino

答えて

3

Iの事。内部的にバンドルはjsをキャッシュするがapp/cacheにあるので、リクエストごとにコントローラを経由する必要がある。私は公開翻訳バンドルに慣れていませんが、私はそれがここでも同じ問題だと思います。

githubの上FOSJsRouterBundleの発行trackeで進行中の議論がなされてきたとsollutionもあります。ここでは完全な問題を参照してください:https://github.com/FriendsOfSymfony/FOSJsRoutingBundle/issues/22

この問題を回避するには、スクリプトを持っているか、Web/jsのディレクトリ内のファイルへの出力をダンプするコマンド:

<?php 

require_once __DIR__.'/../app/bootstrap.php.cache'; 
require_once __DIR__.'/../app/AppKernel.php'; 

use Symfony\Component\HttpFoundation\Request; 

$kernel = new AppKernel('stage', false); 
$kernel->loadClassCache(); 
$response = $kernel->handle(Request::create('/js/routing?callback=fos.Router.setData')); 

file_put_contents(__DIR__.'/../web/js/routes.js', $response->getContent()); 

これは多少回避策のsollutionのです。私はジェネリックバンドルを実装することを考えていました。このタスクは、コントローラを使ってjsを出力するいくつかの他のバンドルに対して設定できます。コントローラのアクションはymlファイルで設定されなければならず、コマンドはルート/文字列の各展開/変更時に実行されなければなりません。しかし、私はやりなさい、このための時間を持っていた...まだ;)

+0

ニースのソリューションthx! –

1

代わりの輸入、あなたが喜んすなわち、インラインそれを置くことができます:

<script type="text/javascript"> 
{# BazingaExposeTranslation #} 
{% render 'bazinga.exposetranslation.controller:exposeTranslationAction' 
    with { domain_name: "messages", _locale:app.session.locale, _format: "js" } %} 

{# JMSI18nRoutingBundle ... #} 

</script> 

をあなたはそれらのバンドルのルーティングファイルをチェックする必要があります。

関連する問題