4

Assetic と Twig で Symfony2 を使用しています。Backbone、jQuery、jQuery UI、Bootstrap など、さまざまなフロントエンド ライブラリがあります。Bootstrap と jQuery UI の両方に、CSS ファイルと JS ファイルが含まれています。

含める必要があるリソース (依存関係を含む) を定義し、Twig/Assetic でそれらすべてのリソースを 1 つのタグに含める方法はありますか? 私が見たいのは次のようなものです:

// config.yml <!-- DOES NOT WORK -->
assetic:
  resources:
    jquery:
      js: /filepath/to/jquery.js
    jquery_ui:
      dependencies: jquery
      css: /filepath/to/jqueryui.css
      js: /filepath/to/jqueryui.js
    less:
      js: /filepath/to/less.js
    bootstrap:
      dependencies: { less, jquery }
      js: /filepath/to/bootstrap.js
      css: /filepath/to/bootstrap.css
    backbone:
      dependencies: { jquery }
      js: { /filepath/to/underscore.js, /filepath/to/backbone.js }

// view.html.twig
{% use jquery_ui %}
{% use bootstrap %} 

// outputs all js and css for jQuery, jQueryUI, Less, Backbone, and Bootstrap

関連する質問がいくつか見つかりました。

しかし、どちらも config.yml でリソースを定義する必要はないようです。代わりに、それらを定義しますが、base.html.twigそれは私が避けようとしていることです。

「 jquery_ui use」というテンプレートを定義し、そのブロックで{% stylesheets %}andを使用してから. ただし、本文があるため、テンプレートはインポートされません。{% javascripts %}base.html.twig{% use "jquery-ui.html" %}use

4

3 に答える 3

16

フロントエンドライブラリの定義は確かにサポートされていますが、残念ながら依存関係の解決はサポートされていません。また、CSSとJavaScriptを別々に定義する必要があります。

私がやっていることは、/app/config/呼び出されたときに別のファイルを作成しassets.yml、それをメイン構成に含めて、物事をきれいに保つことです。

assetic:
    assets:
        jquery:
            inputs:
                - '%kernel.root_dir%/Resources/public/js/jquery.js'
                - '%kernel.root_dir%/Resources/public/js/jquery-ui.js'
        my_lib:
            inputs:
                - '%kernel.root_dir%/Resources/public/js/my-custom-lib.js'
                - ...

´%kernel.root_dir%´はappデフォルトでSymfony2のディレクトリに解決されることに注意してください。これで、Twigテンプレートのアセットを使用できます。

{% block javascripts %}
    {% javascripts '@jquery' '@my_lib' output="js/jquery.js" %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

CSSファイルについても同じことができます。この例は、CSSとJavaScriptを単一のアセットとして定義できない理由も示しています。

于 2012-05-31T20:39:12.770 に答える
1

最も簡単な解決策は、web/ ディレクトリ内の適切なディレクトリに配置することです。これは、すべての Symfony バンドルに提供されるサイトのルートであるためです。

于 2014-01-06T17:15:24.323 に答える