1

这有点令人沮丧。根据 Symfony 最佳实践,bundle 的 web 资源(图像、css、js)应该放在src/vendor/path/to/bundle/Resources/public. 运行app/console assets:install将该公用文件夹的内容复制到web/bundles/bundlename. 在官方文档中,显示了 Twig 模板来获取这些资产,代码如下:

{% block stylesheets %}
    <link rel="stylesheet" type="text/css" href="{{ asset('/css/styles.css') }}
{% endblock %}

web/bundles/bundlename/css/styles.css当我尝试它时,它并没有神奇地从web/css/styles.css. 这是预期的行为吗?官方文档对此不太清楚。

为了尝试解决这个问题,我尝试采用资产动态服务资产的能力。我试过:

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

但得到以下异常:

在 "/home/凯文/www/src/mybundle/Resources/views/Home/index.html.twig

Symfony 官方文档表明它应该可以开箱即用,无需任何配置。

所以,TLDR:

  1. 我不明白应该如何加载资产吗?
  2. 如何解决资产异常?
4

1 回答 1

5

要修复资产异常,您需要在 config.yml 中配置您的包,如下所示:

assetic:
    bundles: [ MyAwesomeBundle ]

{{ asset(...) }}twig 函数将提供与您的 Web 根目录相关的文件。

您用于app/console assets:install在 Web 根目录中安装静态资产,稍后您可以使用资产功能轻松指向它们,如下所示{{ asset('/mybundle/css/site.css') }}

于 2012-11-27T12:57:55.207 回答