我使用Symfony 2.8为我的单页web应用程序。我有一个文件index.html.twig
,它应该提供所有所需的资源。也许这是显而易见的,但我希望每次在开发环境中都重新加载所有内容,而不是在生产环境中。所述所需资源是从位于vendor
文件夹中的另一个bundle的Resources
加载的。
出于这个原因,我在config.yml
中配置了astic,如下所示:
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
命令中似乎不可用。此外,似乎没有"循环方法"(或任何你想要调用的东西为stylesheets
, javascripts
和images
)的HTML导入。如果我直接链接到有问题的文件,除了会导致与周围代码完全不一致的丑陋hack之外,我还会破坏整个Symfony/Assetic自动处理资源重新排序系统,并且调试变得一团糟。我如何解决这个问题,而不是每次在调试时更改代码时都强迫我重新转储资产?(是否有可能以合理的方式解决?)
After assets:install &&你可以直接链接到:
href="/bundles/stubbornshowa/polymer/my-component.html"
看一下
/web/bundles/
目录如果你只是更新文件,你可以使用assetic:dump——watch或assetic:watch
如果你把新文件放到你的资源中,你必须调用assets:install
在/web文件夹中你也可以创建一个名为uploads的文件夹把你的东西放到那里,你可以通过href="/uploads/…"那么你根本不需要任何资产
似乎不可能像使用JavaScript、CSS和图像那样在asset中使用HTML导入。从手册中引用:
您可以使用asset来处理CSS样式表,JavaScript文件和图像。
在我看来,应该做什么在很大程度上取决于情况(要求)。也许将所有内容都放入模板中也是一种可能性,但在我的特殊情况下,我必须导入Polymer组件,因此将这些HTML文件放入模板将是一场噩梦(因为语法冲突等原因)。因此,我使用url
获得路径,并使用本答案中描述的方法。