Symfony 2.1 - 加载资产的问题和资产引发的异常

Maj*_*ons 1 php exception twig assetic symfony-2.1

这有点令人沮丧.根据Symfony的最佳实践,应该放置一个bundle的web资产(images,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 %}
Run Code Online (Sandbox Code Playgroud)

当我尝试它,而不是神奇地抓住我的资产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 %}
Run Code Online (Sandbox Code Playgroud)

但得到以下异常:

在编译模板期间抛出异常("您必须将mybundle添加到assetic.bundle配置以使用mybundle中的{%stylesheets%}标记:Home:index.html.twig.")"/ home /凯文/ WWW/src目录/ mybundle /资源/视图/主页/ index.html.twig

官方的Symfony文档使它看起来它应该工作了,没有必要配置的开箱.

那么,TLDR:

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

lif*_*ifo 5

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

assetic:
    bundles: [ MyAwesomeBundle ]
Run Code Online (Sandbox Code Playgroud)

{{ asset(...) }}树枝功能将成为从Web根目录相对的文件.

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