Jak naprawić wyjątek „Dodaj myBundle do konfiguracji asseticBundle” w symfony2?

84

Kiedy próbuję użyć {% javascript %}tagu TWIG, aby połączyć się z moim .jsplikiem, zwraca mnie z następującym wyjątkiem:

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

Mój index.html.twigwygląd wygląda tak:

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

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

Mój pakiet jest już obecny w pliku konfiguracyjnym, gdy:

php app/console config:dump-reference assetic

Jak mogę to naprawić?

Manish Basdeo
źródło
Sprawdź to pytanie i dwa proponowane rozwiązania: stackoverflow.com/questions/10376946/…
Carlos Granados
Byłoby dobrze, gdybyś rzeczywiście wybrał odpowiedź na to pytanie.
tftd

Odpowiedzi:

176

Tak, próbowałem i to rozwiązało problem. Dla kogoś (takiego jak ja), który początkowo nie wie, jak dodać, po prostu:

  1. edytować app/config/config.yml
  2. następnie idź do assetic:
  3. under assetic: idź do bundles: []
  4. iw bundles: []// wpisz nazwę swojego pakietu

na przykład jeśli twój pakiet to Acme\DemoBundle, wykonaj następujące czynności

assetic:
   bundles: [ AcmeDemoBundle ]

Brak cytatów AcmeDemoBundle. Otóż ​​to. (Symfony2)

Shabbir Reshamwala
źródło
14
W razie potrzeby dodatkowe paczki należy oddzielić przecinkami.
Zoot,
1
Używam symfony2.3, dodałem swój pakiet do tablicy, ale nadal mam ten sam wyjątek. Nawet gdy komentuję pakiety, otrzymuję ten sam komunikat o wyjątku. Co powinienem zrobić?
Dev DOS
Jeśli przeprowadzasz migrację do produktu prod i masz ten problem, nie zapomnij wyczyścić pamięci podręcznej i zrzucić swoje zasoby: "php app / console cache: clear --env = prod --no-debug" i "php app / console assetic: dump --env = prod --no-debug "
Bertrand
@Dev DOS czy u znalazłeś rozwiązanie ..?
Euphor08
24

Jeśli chcesz domyślnie dołączać swoje pakiety, możesz skomentować (z #) wiersz bundles: []

dawny:

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    #bundles:        [ ]
    #java: /usr/bin/java
Tivie
źródło
czy jest jakiś efekt uboczny komentowania pakietów?
Permana
Żadnego, o czym nie mogę myśleć. To po prostu sprawia, że ​​wszystkie pakiety w projekcie są dostępne. Może może spowolnić twoją aplikację, ale osobiście nigdy nie zauważyłem żadnych różnic w szybkości.
Tivie
10

Czasami musisz podejmować decyzje w locie, wtedy możesz użyć DependencyInjection .

Na przykład do ładowania i zarządzania konfiguracją :

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

        /* ... */
    }
}

Możesz użyć bardziej złożonej logiki do manipulowania konfiguracją (w rozsądnych granicach)

Максим Шатов
źródło
1
Jest to szczególnie przydatne, jeśli rozszerzasz inny pakiet za pomocą dziedziczenia pakietów.
grypa
3

Musisz dodać swój pakiet do pakietu: [] wiersz assetic: sekcja w pliku app / config / config.yml (symfony 2.1)

user1041503
źródło