Comment corriger l'exception symfony2 «Ajouter myBundle à la configuration asseticBundle»?

84

Lorsque j'essaie d'utiliser la {% javascript %}balise TWIG pour créer un lien vers mon .jsfichier, elle me renvoie à l'exception suivante:

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

Mon index.html.twigressemble à:

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

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

Mon Bundle est déjà présent dans le fichier de configuration lorsque je fais:

php app/console config:dump-reference assetic

Comment puis-je réparer cela ?

Manish Basdeo
la source
Vérifiez cette question et les deux solutions proposées: stackoverflow.com/questions/10376946/…
Carlos Granados
Il serait bon que vous choisissiez une réponse à cette question.
tftd

Réponses:

176

Oui, j'ai essayé et cela a résolu le problème pour moi. Pour quelqu'un (comme moi) qui ne sait pas au départ comment ajouter alors juste:

  1. Éditer app/config/config.yml
  2. ensuite aller à assetic:
  3. sous assétique: aller à bundles: []
  4. et dans bundles: []// tapez le nom de votre bundle

par exemple, si votre bundle l'est Acme\DemoBundle, procédez comme suit

assetic:
   bundles: [ AcmeDemoBundle ]

Pas de citations autour AcmeDemoBundle. C'est ça. (Symfony2)

Shabbir Reshamwala
la source
14
Si nécessaire, les lots supplémentaires doivent être séparés par des virgules.
Zoot le
1
J'utilise symfony2.3, j'ai ajouté mon bundle au tableau mais j'ai toujours la même exception. Même lorsque je commente les bundles, j'obtiens le même message d'exception. Que devrais-je faire?
Dev DOS
Si vous migrez vers prod et que vous rencontrez ce problème, n'oubliez pas de nettoyer votre cache et de vider vos actifs associés: "php app / console cache: clear --env = prod --no-debug" et "php app / console assetic: dump --env = prod --no-debug "
Bertrand
@Dev DOS avez-vous trouvé une solution ..?
Euphor08
24

Si vous souhaitez qu'assetic inclue vos bundles par défaut, vous pouvez commenter (avec #) la ligne bundles: []

ex:

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    #bundles:        [ ]
    #java: /usr/bin/java
Tivie
la source
y a-t-il un effet secondaire pour commenter les bundles?
Permana
Aucun auquel je puisse penser. Cela permet simplement d'inclure tous les bundles dans votre projet. Peut-être que cela peut ralentir votre application, mais personnellement, je n'ai jamais remarqué de différences de vitesse.
Tivie
10

Parfois, vous devez prendre des décisions à la volée, vous pouvez alors utiliser DependencyInjection .

Par exemple pour charger et gérer la configuration :

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

        /* ... */
    }
}

Vous pouvez utiliser une logique plus complexe pour manipuler la configuration (dans des limites raisonnables)

Максим Шатов
la source
1
Ceci est particulièrement utile si vous étendez un autre Bundle à l'aide de l'héritage de Bundle.
grippe
3

Vous devez ajouter votre bundle au bundle: [] row of assetic: section dans le fichier app / config / config.yml (symfony 2.1)

utilisateur1041503
la source