Как мне исправить исключение symfony2 «Добавить myBundle в конфигурацию AsseticBundle»?


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 / сборка консоли: dump --env = prod --no-debug "
Бертран

@Dev DOS ты нашел решение ..?
Euphor08

24

Если вы хотите, чтобы ассетик включал ваши пакеты по умолчанию, вы можете прокомментировать (с #) строку bundles: []

пример:

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

есть ли побочный эффект для комментирования пакетов?
Permana

Ничего подобного. Он просто заставляет сборку включать все пакеты в вашем проекте. Возможно, это может замедлить работу вашего приложения, но лично я никогда не замечал разницы в скорости.
Tivie

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.