我在单页面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导入,似乎没有“循环方法”(或者您想要为stylesheets
,javascripts
和images
调用该东西)。如果我直接链接到有问题的文件,除了弯曲到完全破坏与周围代码的一致性的丑陋黑客之外,我还打破整个Symfony / Assetic自动处理资源重新排序系统并且调试变得一团糟。我如何解决这个问题,这样每次在调试时更改代码都不会强制我重新转储资产? (有可能以合理的方式解决吗?)
答案 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中描述的方法。