Symfony:Assetic不使用带引导包的控制器?

时间:2014-01-09 16:42:57

标签: symfony twig

我是Symfony(2.4)的新手,无法理解Assetic如何通过应用程序而不是文件系统来进行开发。

特别是,我正在尝试设置BrainCrafted Bootstrap Bundle,这样我就不必转储我的资产来开发它。

在我的基本模板文件中,我有:

<link href="{{ asset('/css/bootstrap.css') }}" rel="stylesheet" media="screen">

当我使用app_dev.php渲染页面时,路径不会改变,仍然会尝试通过/css/bootstrap.css加载它,这不存在。

我对“use_controller”的资产设置设置为true。

但是,如果我包含这样的样式表:

{% stylesheets '@MyCustomBundle/Resources/public/css/*' %}
  <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

然后,样式表的URL正确地以“app_dev.php”为根。

为什么主asset枝条功能不在app_dev.php之前?

3 个答案:

答案 0 :(得分:1)

BootstrapBundle使用config.yml配置Assetic。您需要使用php app/console assetic:dump转储资产以生成CSS文件。

如果要在Twig模板中配置样式表,则应使用stylesheets(如DovydasBartkevičius所述),如果要在config.yml中配置样式表,则必须生成静态CSS使用php app/console assetic:dump并使用assets在模板中包含静态文件。

BootstrapBundle使用config.yml配置Assetic,因此您必须转储资产。在开发过程中,您还可以在每次源更改时使用php app/console assetic:dump --watch生成CSS。

答案 1 :(得分:0)

{{ asset }}函数只是添加项目的assets文件夹的路径。您的资产似乎位于软件包的目录中,因此它们不公开,无法访问。

http://symfony.com/doc/current/book/templating.html#linking-to-assets

{% stylesheets %}{% javascripts %}实际上从您的捆绑包中获取资产文件,如果存在,则应用过滤器(压缩等),并通过控制器请求服务。

您可以使用命令行API php app/console assetic:dump转储资产文件。

http://symfony.com/doc/current/cookbook/assetic/asset_management.html#dumping-asset-files

答案 2 :(得分:0)

如果您将绝对路径传递给asset函数,那么它将返回参数而不会更改它。