Symfony2 / Assetic:在资产路径中为导入的HTML文件使用捆绑注释

时间:2016-10-31 04:04:32

标签: symfony twig assetic

我在单页面Web应用程序中使用Symfony 2.8。我有一个文件index.html.twig,它应该提供所有必需的资源。也许这很明显,但我希望每次都能在开发环境中重新加载所有内容,而不是在生产环境中重新加载。所需的资源是从位于Resources文件夹中的另一个包vendor加载的。

出于这个原因,我已在config.yml中配置了Assetic,如下所述:

assetic:
    debug: "%kernel.debug%"
    use_controller:
        enabled: "%kernel.debug%"
    workers:
        cache_busting:
            enabled: "%kernel.debug%"

(我假设调试仅在开发环境中启用)

我正在加载所需的CSS / JavaScript:

{% stylesheets
    '@StubbornShowaBundle/Resources/public/stubborn.css'
    '@StubbornShowaBundle/Resources/public/showa.css' %}
        <link type="text/css" href="{{ asset_url }}" rel="stylesheet" />
{% endstylesheets %}
{% javascripts
    '@StubbornShowaBundle/Resources/public/stubborn.js'
    '@StubbornShowaBundle/Resources/public/showa.js' %}
        <script src="{{ asset_url }}"></script>
{% endjavascripts %}

..似乎按预期工作。但是,我也导入了HTML文件。像这样:

<link href="{{ asset('@StubbornShowaBundle/Resources/public/polymer/my-component.html') }}" rel="import"/>

但是,上面的代码不起作用。 @StubbornShowaBundle注释似乎在asset命令中不可用。此外,对于HTML导入,似乎没有“循环方法”(或者您想要为stylesheetsjavascriptsimages调用该东西)。如果我直接链接到有问题的文件,除了弯曲到完全破坏与周围代码的一致性的丑陋黑客之外,我还打破整个Symfony / Assetic自动处理资源重新排序系统并且调试变得一团糟。我如何解决这个问题,这样每次在调试时更改代码都不会强制我重新转储资产? (有可能以合理的方式解决吗?)

2 个答案:

答案 0 :(得分:1)

资产后:安装&amp;&amp; assetic:dump你只需链接到它:

href="/bundles/stubbornshowa/polymer/my-component.html"

看看

/web/bundles/

目录

如果您只是更新文件,可以使用assetic:dump --watch或assetic:watch

如果您将新文件放入资源,则必须调用资产:安装

答案 1 :(得分:0)

似乎无法在Assetic中使用HTML导入,就像它用于JavaScript,CSS和图像一样。 To quote from the manual

您可以使用Assetic来处理CSS样式表,JavaScript文件和图像。


应该做的事情在很大程度上取决于案例(要求),据我所知。也许将所有东西都变成模板也是可能的,但在我的特殊情况下,我必须导入Polymer组件,因此将这些HTML文件制作成模板将是一场噩梦(因为语法冲突,以及诸如此类的东西)。 所以我使用url得到了路径,并使用了this answer中描述的方法。