84

当我尝试使用 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

我怎样才能解决这个问题 ?

4

4 回答 4

176

是的,我试过了,它为我解决了这个问题。对于最初不知道如何添加的人(比如我),然后只需:

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

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

assetic:
   bundles: [ AcmeDemoBundle ]

周围没有引号AcmeDemoBundle。而已。(Symfony2)

于 2013-01-09T08:38:26.103 回答
24

如果您希望资产默认包含您的捆绑包,您可以注释(带#)该行bundles: []

前任:

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    #bundles:        [ ]
    #java: /usr/bin/java
于 2013-01-10T09:51:02.273 回答
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);

        /* ... */
    }
}

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

于 2014-03-05T10:43:19.573 回答
3

你需要将你的包添加到 bundle: [] row ofassetic: app/config/config.yml 文件中的部分(symfony 2.1)

于 2012-10-26T21:04:24.430 回答