如何修复“ Add myBundle to the asseticBundle config”symfony2异常?

当我试图使用 TWIG {% javascript %}标签链接到我的 .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>

当我这样做时,我的 Bundle 已经出现在配置文件中:

php app/console config:dump-reference assetic

我该怎么补救?

36534 次浏览

您需要将您的 bundle 添加到 bundle 中: app/config/config.yml 文件(symfony 2.1)中的 asestic: 节的[]行

是的,我试过了,它为我解决了问题。对于像我这样一开始不知道如何加法的人来说:

  1. 编辑 app/config/config.yml
  2. 然后转到 assetic:
  3. 转到 bundles: []
  4. 并在 bundles: []//中键入您的捆绑包名称

例如,如果您的捆绑包是 Acme\DemoBundle,那么执行以下操作

assetic:
bundles: [ AcmeDemoBundle ]

不要在 AcmeDemoBundle附近引用,就这样

如果您希望 ASASIC 默认包含您的捆绑包,您可以注释(使用 #) bundles: []

例如:

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

有时您需要在运行中做出决策,然后您可以使用 依赖注射

例如 加载和管理配置:

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


/* ... */
}
}

您可以使用更复杂的逻辑来操作配置(在合理的限制内)