1

これは少しイライラします。Symfony のベスト プラクティスによると、バンドルの 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. これは予想される動作ですか?公式ドキュメントはこれについて明確ではありません。

この問題に対処するために、資産を動的に提供する assetic の機能を取り入れてみました。私は試した:

{% 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 ルートからの相対ファイルを提供します。

Webルート内に静的アセットをインストールするために使用app/console assets:installし、後でこのようなアセット関数を使用して簡単にそれらを指すことができます{{ asset('/mybundle/css/site.css') }}

于 2012-11-27T12:57:55.207 に答える