如何修复“将myBundle添加到asseticBundle配置” symfony2异常?


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>

当我这样做时,我的捆绑包已经存在于配置文件中:

php app/console config:dump-reference assetic

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


检查此问题和两个建议的解决方案:stackoverflow.com/questions/10376946/…–
卡洛斯·格拉纳多斯

您实际上选择了该问题的答案就好了。
tftd

Answers:


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 2015年

如果您要迁移到prod并遇到此问题,请不要忘记清理缓存并转储您的资产:“ php app / console cache:clear --env = prod --no-debug”和“ php app /控制台资产:dump --env = prod --no-debug“
Bertrand

@Dev DOS您找到解决方案了吗?
Euphor08 '16

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,这将特别有用。
2015年

3

您需要将您的捆绑包添加到app / config / config.yml文件(symfony 2.1)中的bundle:[] Assetic:部分中

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.