84 votes

Comment corriger l'exception symfony2 "Add myBundle to the asseticBundle config" ?

Lorsque j'essaie d'utiliser le TWIG {% javascript %} pour faire le lien avec mon .js il 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.twig ressemble à :

{% 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ésoudre ce problème ?

0 votes

Vérifiez cette question et les deux solutions proposées : stackoverflow.com/questions/10376946/

0 votes

Il serait bon que vous choisissiez une réponse à cette question.

176voto

Shabbir Reshamwala Points 1026

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

  1. modifier app/config/config.yml
  2. puis aller à assetic:
  3. sous assise : aller à bundles: []
  4. et en bundles: [] //tapez votre nom de bundle

par exemple, si votre liasse est Acme\DemoBundle alors faites ce qui suit

assetic:
   bundles: [ AcmeDemoBundle ]

Pas de guillemets autour AcmeDemoBundle . C'est tout. (Symfony2)

14 votes

Si nécessaire, les liasses supplémentaires doivent être séparées par des virgules.

1 votes

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 dois-je faire ?

0 votes

Si vous migrez vers prod, et que vous rencontrez ce problème, n'oubliez pas de nettoyer votre cache et de vider vos ressources assetic : " php app/console cache:clear --env=prod --no-debug " et " php app/console assetic:dump --env=prod --no-debug ".

24voto

Tivie Points 4581

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

ex :

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

0 votes

Y a-t-il des effets secondaires à commenter les offres groupées ?

0 votes

Aucune à laquelle je puisse penser. Il fait juste en sorte qu'assetic inclue tous les bundles dans votre projet. Peut-être que cela peut ralentir votre application, mais personnellement je n'ai jamais remarqué de différence de vitesse.

10voto

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

Par exemple pour charge et gère 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).

1 votes

Ceci est particulièrement utile si vous étendez un autre Bundle en utilisant l'héritage de Bundle.

3voto

user1041503 Points 40

Vous devez ajouter votre liasse à la liasse : [] ligne de la section assetic : dans le fichier app/config/config.yml (symfony 2.1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X