web-dev-qa-db-fra.com

Comment puis-je corriger l'exception "Symfony2" Ajouter monBundle à la configuration asseticBundle?

Lorsque j'essaie d'utiliser le TWIG {% javascript %} tag pour créer un lien vers mon .js fichier, il me renvoie avec 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".

Ma 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 le fais:

php app/console config:dump-reference assetic

Comment puis-je réparer cela ?

84
Vimal Basdeo

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

  1. modifier app/config/config.yml
  2. ensuite aller à assetic:
  3. sous assétique: allez à bundles: []
  4. et en bundles: [] // saisissez le nom de votre forfait

par exemple, si votre forfait est Acme\DemoBundle, puis procédez comme suit

assetic:
   bundles: [ AcmeDemoBundle ]

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

174
Shabbir Reshamwala

Si vous voulez 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
24
Tivie

Parfois, vous devez prendre des décisions à la volée, alors vous pouvez utiliser use 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)

Vous devez ajouter votre bundle à bundle: [] ligne d'assetic: section dans le fichier app/config/config.yml (symfony 2.1)

3
user1041503