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.