¿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 ?


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)


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

¿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)


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)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.