Як виправити виняток “Додати myBundle до конфігурації activicBundle” symfony2?


84

Коли я намагаюся використовувати {% javascript %}тег TWIG для посилання на мій .jsфайл, він повертає мене за наступним винятком:

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

Мій index.html.twigвигляд:

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

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

Мій пакет уже присутній у файлі конфігурації, коли я це роблю:

php app/console config:dump-reference assetic

Як я можу це виправити?


Перевірте це питання та два запропоновані рішення: stackoverflow.com/questions/10376946/…
Карлос Гранадос,

Ви б справді вибрали відповідь на це запитання.
tftd

Відповіді:


176

Так, я спробував, і це вирішило проблему для мене. Для когось (як я), який спочатку не знає, як додати, просто:

  1. редагувати app/config/config.yml
  2. потім перейдіть до assetic:
  3. під активом: перейти до bundles: []
  4. а в bundles: []// введіть ім’я вашого набору

наприклад, якщо ваш комплект є Acme\DemoBundle, зробіть наступне

assetic:
   bundles: [ AcmeDemoBundle ]

Ніяких цитат навколо AcmeDemoBundle. Це воно. (Symfony2)


14
За потреби додаткові пачки слід відокремити комами.
Zoot

1
Я використовую symfony2.3, я додав свій комплект до масиву, але все ще маю такий самий виняток. Навіть коли я коментую пакети, я отримую одне і те ж повідомлення про виключення. Що я повинен зробити?
Dev DOS

Якщо ви переходите на prod, і у вас виникла ця проблема, не забудьте очистити кеш-пам'ять і скинути активні активи: "php app / console cache: clear --env = prod --no-debug" і "php app / console activic: dump --env = prod --no-debug "
Бертран

@Dev DOS ви знайшли рішення ..?
Euphor08,

24

Якщо ви хочете, щоб об’єкт включав ваші пакети за замовчуванням, ви можете прокоментувати (за допомогою #) рядок bundles: []

напр .:

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

чи є побічний ефект для коментування пакетів?
Пермана

Жодного, про який я можу придумати. Це просто змушує активу включати всі пакети у ваш проект. Можливо, це може уповільнити ваш додаток, але особисто я ніколи не помічав різниці у швидкості.
Тіві

10

Іноді вам потрібно приймати рішення на льоту, тоді ви можете використовувати функцію DependencyInjection .

Наприклад, для завантаження та управління конфігурацією :

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

        /* ... */
    }
}

Ви можете використовувати більш складну логіку для маніпулювання конфігурацією (у розумних межах)


1
Це особливо корисно, якщо ви розширюєте інший Bundle за допомогою успадкування Bundle.
грип

3

Вам потрібно додати свій пакет до пакета: [] рядок активу: розділ у файлі app / config / config.yml (symfony 2.1)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.