2012-03-17 6 views
5

मैं ExposeTranslationBundle उपयोग कर रहा हूँ (मार्गों जावास्क्रिप्ट को बेनकाब)।Symfony2 में इन संपत्तियों को कैसे गठबंधन करें? (बेनकाब <strong>अनुवाद जावास्क्रिप्ट को</strong>) और <em>JMSI18nRoutingBundle</em>

{% 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 और कैसे में पिछले दो <script> आयात गठबंधन करने के लिए संभव है: यह मेरा <head> टैग का हिस्सा है?

+0

क्या आप एक फ़ाइल में जावास्क्रिप्ट ब्लॉक हैं और विभिन्न फाइलों में पिछले दो पंक्तियां हैं? – Axxiss

+0

@Axxiss पिछली दो पंक्तियां थर्ड पार्टी बंडलों से आती हैं। – Polmonino

उत्तर

3

मुझे लगता है कि यह संभव नहीं है क्योंकि FOSJSRouting जावास्क्रिप्ट फ़ाइल नियंत्रक द्वारा उत्पन्न होती है। आंतरिक बंडल जेएस को कैश करता है लेकिन ऐप/कैश में, इसलिए इसे प्रत्येक अनुरोध नियंत्रक के माध्यम से जाना होगा। मैं एक्सपोज़र अनुवाद बंडल से परिचित नहीं हूं लेकिन मुझे लगता है कि यह वही समस्या है।

जीथ्यूब पर एफओएसजेएस राउटरबंडल के मुद्दे ट्रैक में एक सतत चर्चा हुई है और एक भीषण है। पूर्ण यहां मुद्दा देखें: https://github.com/FriendsOfSymfony/FOSJsRoutingBundle/issues/22

वैकल्पिक हल वेब/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 की कुछ हद तक है। मैं जेनेरिक बंडल को कार्यान्वित करने के बारे में सोच रहा हूं, जिसमें यह काम आउटपुट जेएस के नियंत्रकों का उपयोग करके कई अन्य बंडलों के लिए कॉन्फ़िगर किया जा सकता है। नियंत्रक कार्यों को एक yml फ़ाइल में कॉन्फ़िगर करना होगा और फिर प्रत्येक आदेश/मार्गों/स्ट्रिंग्स के संशोधन पर एक कमांड निष्पादित करना होगा। लेकिन मैं अभी तक इस बात के लिए समय था havn't ...;)

+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> 

आप उन बंडलों के लिए मार्ग फ़ाइल की जाँच की जरूरत है।

संबंधित मुद्दे