Come posso correggere l'eccezione di symfony2 "Aggiungi myBundle alla configurazione di asseticBundle"?


84

Quando provo a utilizzare il {% javascript %}tag TWIG per collegarmi al mio .jsfile, mi viene restituito con la seguente eccezione:

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

Il mio index.html.twigaspetto è:

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

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

Il mio Bundle è già presente nel file di configurazione quando faccio:

php app/console config:dump-reference assetic

Come posso risolvere questo problema?


Controlla questa domanda e le due soluzioni proposte: stackoverflow.com/questions/10376946/…
Carlos Granados

Sarebbe goo id che tu effettivamente selezioni una risposta a questa domanda.
tftd

Risposte:


176

Sì, ho provato e ha risolto il problema per me. Per qualcuno (come me) che inizialmente non sa come aggiungere, allora semplicemente:

  1. modificare app/config/config.yml
  2. poi vai a assetic:
  3. sotto assetic: vai a bundles: []
  4. e in bundles: []// digita il nome del tuo bundle

per esempio, se il tuo pacchetto è Acme\DemoBundle, allora fai quanto segue

assetic:
   bundles: [ AcmeDemoBundle ]

Nessuna citazione in giro AcmeDemoBundle. Questo è tutto. (Symfony2)


14
Se necessario, i bundle aggiuntivi dovrebbero essere separati da virgole.
Zoot

1
Sto usando symfony2.3, ho aggiunto il mio bundle all'array ma ho ancora la stessa eccezione. Anche quando commento i bundle ricevo lo stesso messaggio di eccezione. Cosa dovrei fare?
Dev DOS

Se stai migrando a prod e hai questo problema, non dimenticare di pulire la cache e scaricare le tue risorse assetiche: "php app / console cache: clear --env = prod --no-debug" e "php app / console assetic: dump --env = prod --no-debug "
Bertrand

@ Dev DOS hai trovato una soluzione ..?
Eufor08

24

Se vuoi che assetic includa i tuoi bundle per impostazione predefinita, puoi commentare (con #) la riga bundles: []

ex:

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

ci sono effetti collaterali nel commentare i bundle?
Permana

Nessuno a cui riesco a pensare. Rende solo assetic includere tutti i bundle nel tuo progetto. Forse può rallentare la tua app, ma personalmente non ho mai notato differenze di velocità.
Tivie

10

A volte è necessario prendere decisioni al volo, quindi è possibile utilizzare DependencyInjection .

Ad esempio per caricare e gestire la configurazione :

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

        /* ... */
    }
}

È possibile utilizzare una logica più complessa per manipolare la configurazione (entro limiti ragionevoli)


1
Ciò è particolarmente utile se estendi un altro bundle utilizzando l'ereditarietà del bundle.
influenza

3

Devi aggiungere il tuo bundle al bundle: [] riga della sezione assetic: nel file app / config / config.yml (symfony 2.1)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.