मैं "assBBlele config में myBundle कैसे जोड़ें" सिम्फनी 2 अपवाद को कैसे ठीक करूं?


84

जब मैं {% javascript %}अपनी .jsफ़ाइल से लिंक करने के लिए TWIG टैग का उपयोग करने की कोशिश कर रहा हूं तो यह मुझे निम्न अपवाद के साथ लौटाएगा:

An exception has been thrown during the compilation of a template ("You must add CompetitiongameBundle to the assetic.bundle config to use the {% javascripts %} tag in CompetitiongameBundle:game:index.html.twig.") in "CompetitiongameBundle:game:index.html.twig".

मेरी index.html.twigतरह दिखता है:

{% javascripts 'CompetitiongameBundle/Resources/views/public/js/*'%}
    <script type="text/javascript" src="{{ asset_url }}" ></script>
{% endjavascripts %}
Hello {{ name }}!

<a href='{{ nexturl }}' >Login</a>

मेरा बंडल पहले से ही कॉन्फ़िगर फ़ाइल में मौजूद है जब मैं करता हूं:

php app/console config:dump-reference assetic

मैं इसे कैसे ठीक करूं ?


इस प्रश्न और दो प्रस्तावित समाधानों की जाँच करें: stackoverflow.com/questions/10376946/…
कार्लोस ग्रान्डोस

यह goo id होगा जिसे आप वास्तव में इस प्रश्न का उत्तर चुनते हैं।
tftd

जवाबों:


176

हां मैंने कोशिश की और इसने मेरे लिए इस मुद्दे को हल कर दिया। किसी के लिए (मेरे जैसे) जो शुरू में नहीं जानता कि कैसे बस जोड़ना है:

  1. संपादित करें app/config/config.yml
  2. फिर जाएं assetic:
  3. अंडर एसिटिक: टू गो bundles: []
  4. और bundles: []// अपना बंडल नाम टाइप करें

उदाहरण के लिए यदि आपका बंडल है Acme\DemoBundle, तो निम्न कार्य करें

assetic:
   bundles: [ AcmeDemoBundle ]

आसपास कोई उद्धरण नहीं AcmeDemoBundle। बस। (Symfony2)


14
यदि आवश्यक हो, अतिरिक्त बंडलों को कॉमा द्वारा अलग किया जाना चाहिए।
ज़ूट

1
मैं symfony2.3 का उपयोग कर रहा हूं, मैंने अपने बंडल को सरणी में जोड़ा है लेकिन मेरे पास अभी भी वही अपवाद है। जब मैं बंडलों की टिप्पणी करता हूं तब भी मुझे वही अपवाद संदेश मिलता है। मुझे क्या करना चाहिए?
देव DOS

यदि आप ठेस के लिए पलायन कर रहे हैं, और यह मुद्दा है, तो अपने कैश को साफ़ करना न भूलें और अपनी एसेंशियल एसेट्स को डंप करें: "php app / कंसोल कैश: clear --env = prod --no-debug" और "php app / सांत्वना एसिटिक: डंप - वेंव = ठेस
बर्ट्रेंड

@ डेव डॉस यू ने एक समाधान पाया ..?
युफोर

24

यदि आप अपने बंडलों को डिफ़ॉल्ट रूप से शामिल करने के लिए एसिटिक चाहते हैं, तो आप लाइन पर (# के साथ) टिप्पणी कर सकते हैं bundles: []

उदाहरण के लिए:

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    #bundles:        [ ]
    #java: /usr/bin/java

क्या बंडलों को टिप्पणी करने के लिए कोई दुष्प्रभाव है?
परमाना

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

10

कभी-कभी आपको मक्खी पर निर्णय लेने की आवश्यकता होती है, तो आप DependencyInjection का उपयोग कर सकते हैं ।

कॉन्फ़िगरेशन को लोड और प्रबंधित करने के लिए उदाहरण के लिए :

<?php

namespace You\ExampeBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;

/* ... */

class YouExampeExtension extends Extension
{

    /* ... */

    public function load(array $configs, ContainerBuilder $container)
    {
        /* ... */

        $aAsseticBundle = $container->getParameter('assetic.bundles');
        $aAsseticBundle[] = 'YouExampeBundle';
        $aAsseticBundle[] = 'AnotheBundle';
        $container->setParameter('assetic.bundles', $aAsseticBundle);

        /* ... */
    }
}

आप कॉन्फ़िगरेशन में हेरफेर करने के लिए (उचित सीमा में) अधिक जटिल तर्क का उपयोग कर सकते हैं


1
यह विशेष रूप से उपयोगी है यदि आप बंडल इनहेरिटेंस का उपयोग करके एक और बंडल बढ़ाते हैं।
फ्लू

3

आपको अपने बंडल को बंडल में जोड़ने की आवश्यकता है: [] एसिटिक की पंक्ति: ऐप / config / config.yml फ़ाइल में अनुभाग (सिम्फनी 2.1)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.