¿Cómo soluciono la excepción de Symfony2 "Agregar myBundle a la configuración de asseticBundle"?

84

Cuando intento usar la {% javascript %}etiqueta TWIG para vincular a mi .jsarchivo, me devuelve con la siguiente excepción:

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

Mi index.html.twigapariencia es:

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

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

Mi paquete ya está presente en el archivo de configuración cuando lo hago:

php app/console config:dump-reference assetic

Cómo puedo arreglar esto ?

Manish Basdeo
fuente
Consulte esta pregunta y las dos soluciones propuestas: stackoverflow.com/questions/10376946/…
Carlos Granados
Sería bueno que realmente seleccionara una respuesta a esta pregunta.
tftd

Respuestas:

176

Sí, lo intenté y me resolvió el problema. Para alguien (como yo) que inicialmente no sabe cómo agregar, simplemente:

  1. editar app/config/config.yml
  2. luego ve a assetic:
  3. en assetic: ir a bundles: []
  4. y en bundles: []// escribe el nombre de tu paquete

por ejemplo, si su paquete es Acme\DemoBundle, haga lo siguiente

assetic:
   bundles: [ AcmeDemoBundle ]

Sin comillas AcmeDemoBundle. Eso es. (Symfony2)

Shabbir Reshamwala
fuente
14
Si es necesario, los paquetes adicionales deben estar separados por comas.
Zoot
1
Estoy usando Symfony2.3, agregué mi paquete a la matriz pero todavía tengo la misma excepción. Incluso cuando comento los paquetes, recibo el mismo mensaje de excepción. ¿Qué tengo que hacer?
Dev DOS
Si está migrando a prod y tiene este problema, no olvide limpiar su caché y volcar sus activos assetic: "php app / console cache: clear --env = prod --no-debug" y "php app / consola assetic: dump --env = prod --no-debug "
Bertrand
@Dev DOS ¿has encontrado una solución ...?
Euphor08
24

Si desea que assetic incluya sus paquetes por defecto, puede comentar (con #) la línea bundles: []

ex:

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    #bundles:        [ ]
    #java: /usr/bin/java
Tivie
fuente
¿Existe algún efecto secundario por comentar paquetes?
Permana
Ninguno que yo pueda pensar. Simplemente hace que assetic incluya todos los paquetes en su proyecto. Tal vez pueda ralentizar su aplicación, pero personalmente nunca noté ninguna diferencia en la velocidad.
Tivie
10

A veces necesita tomar decisiones sobre la marcha, luego puede usar DependencyInjection .

Por ejemplo, para cargar y gestionar la configuración :

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

        /* ... */
    }
}

Puede utilizar una lógica más compleja para manipular la configuración (en límites razonables)

Максим Шатов
fuente
1
Esto es particularmente útil si amplía otro Bundle usando la herencia de Bundle.
gripe
3

Necesita agregar su paquete al paquete: [] fila de la sección assetic: en el archivo app / config / config.yml (Symfony 2.1)

usuario1041503
fuente