Como faço para corrigir a exceção do symfony2 “Adicionar myBundle à configuração do asseticBundle”?


84

Quando tento usar a {% javascript %}tag TWIG para vincular ao meu .jsarquivo, ela me retorna com a seguinte exceção:

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

Minha index.html.twigaparência é:

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

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

Meu pacote já está presente no arquivo de configuração quando eu faço:

php app/console config:dump-reference assetic

Como posso consertar isso ?


Verifique esta questão e as duas soluções propostas: stackoverflow.com/questions/10376946/…
Carlos Granados

Seria ótimo se você realmente selecionasse uma resposta para esta pergunta.
tftd

Respostas:


176

Sim, eu tentei e resolveu o problema para mim. Para alguém (como eu) que não sabe inicialmente como adicionar, basta:

  1. editar app/config/config.yml
  2. então vá para assetic:
  3. sob assetic: vá para bundles: []
  4. e em bundles: []// digite o nome do seu pacote

por exemplo, se o seu pacote é Acme\DemoBundle, faça o seguinte

assetic:
   bundles: [ AcmeDemoBundle ]

Sem aspas AcmeDemoBundle. É isso aí. (Symfony2)


14
Se necessário, os pacotes adicionais devem ser separados por vírgulas.
Zoot de

1
Estou usando o symfony2.3, adicionei meu pacote ao array, mas ainda tenho a mesma exceção. Mesmo quando comento os pacotes, recebo a mesma mensagem de exceção. O que devo fazer?
Dev DOS

Se você estiver migrando para o prod e tiver esse problema, não se esqueça de limpar seu cache e despejar seus ativos asséticos: "php app / console cache: clear --env = prod --no-debug" e "php app / console assetic: dump --env = prod --no-debug "
Bertrand

@Dev DOS você encontrou uma solução ..?
Euphor08

24

Se quiser que o assetic inclua seus pacotes por padrão, você pode comentar (com #) a linha bundles: []

ex:

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

Existe algum efeito colateral para comentar pacotes?
Permana

Nenhum que eu possa pensar. Isso apenas faz com que o assetic inclua todos os pacotes em seu projeto. Talvez isso torne seu aplicativo lento, mas pessoalmente nunca percebi nenhuma diferença na velocidade.
Tivie

10

Às vezes, você precisa tomar decisões em tempo real, então você pode usar o DependencyInjection .

Por exemplo, para carregar e gerenciar a configuração :

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

        /* ... */
    }
}

Você pode usar uma lógica mais complexa para manipular a configuração (em limites razoáveis)


1
Isso é particularmente útil se você estender outro Bundle usando a herança de Bundle.
gripe

3

Você precisa adicionar seu pacote ao pacote: [] linha de assetic: seção no arquivo app / config / config.yml (symfony 2.1)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.