Wie behebe ich die Symfony2-Ausnahme "MyBundle zur asseticBundle-Konfiguration hinzufügen"?


84

Wenn ich versuche, das TWIG- {% javascript %}Tag zum Verknüpfen mit meiner .jsDatei zu verwenden, wird mir die folgende Ausnahme zurückgegeben:

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".

Mein index.html.twigsieht aus wie:

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

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

Mein Bundle ist bereits in der Konfigurationsdatei vorhanden, wenn ich Folgendes tue:

php app/console config:dump-reference assetic

Wie kann ich das beheben?


Überprüfen Sie diese Frage und die beiden vorgeschlagenen Lösungen: stackoverflow.com/questions/10376946/…
— Carlos Granados

Es wäre gut, wenn Sie tatsächlich eine Antwort auf diese Frage auswählen würden.
— tftd

Antworten:


176

Ja, ich habe es versucht und es hat das Problem für mich gelöst. Für jemanden (wie mich), der zunächst nicht weiß, wie man etwas hinzufügt, dann einfach:

  1. bearbeiten app/config/config.yml
  2. dann geh zu assetic:
  3. unter assetic: geh zu bundles: []
  4. und in bundles: []// geben Sie Ihren Bundle-Namen ein

Wenn Ihr Bundle beispielsweise ist Acme\DemoBundle, gehen Sie wie folgt vor

assetic:
   bundles: [ AcmeDemoBundle ]

Keine Zitate AcmeDemoBundle. Das ist es. (Symfony2)


14
Bei Bedarf sollten zusätzliche Bündel durch Kommas getrennt werden.
— Zoot

1
Ich verwende symfony2.3. ​​Ich habe mein Bundle zum Array hinzugefügt, aber ich habe immer noch die gleiche Ausnahme. Selbst wenn ich die Bundles kommentiere, erhalte ich dieselbe Ausnahmemeldung. Was soll ich machen?
— Dev DOS

Wenn Sie auf prod migrieren und dieses Problem haben, vergessen Sie nicht, Ihren Cache zu bereinigen und Ihre Assetic-Assets zu sichern: "php app / console cache: clear --env = prod --no-debug" und "php app /" Konsole assetic: dump --env = prod --no-debug "
— Bertrand

@ Dev DOS hast du eine Lösung gefunden ..?
— Euphor08

24

Wenn Sie möchten, dass assetic Ihre Bundles standardmäßig enthält, können Sie die Zeile (mit #) kommentieren bundles: []

Ex:

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

Gibt es Nebenwirkungen beim Kommentieren von Bundles?
— Permana

Keine, an die ich denken kann. Assetic macht nur alle Bundles in Ihrem Projekt. Vielleicht kann es Ihre App verlangsamen, aber ich persönlich habe nie Geschwindigkeitsunterschiede bemerkt.
— Tivie

10

Manchmal müssen Sie Entscheidungen im Handumdrehen treffen, dann können Sie DependencyInjection verwenden .

Zum Beispiel zum Laden und Verwalten der Konfiguration :

<?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);

        /* ... */
    }
}

Sie können komplexere Logik verwenden, um die Konfiguration zu manipulieren (in angemessenen Grenzen).


1
Dies ist besonders nützlich, wenn Sie ein anderes Bundle mithilfe der Bundle-Vererbung erweitern.
— Grippe

3

Sie müssen Ihr Bundle zu Bundle hinzufügen: [] Zeile des Abschnitts assetic: in der Datei app / config / config.yml (symfony 2.1)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.