4

独自の小さな Symfony2 フォーム タイプを作成しました。これが正しく機能するには、js ライブラリを含める必要があります。この新しいフォーム タイプを 1 つの Web アプリケーションで使用する場合は簡単な作業でしたが、そのフォーム タイプを専用のバンドルに移動して再利用可能にすることにしたときは、さらに困難になりました。

今のところ、2つの可能な解決策を認識しています

1) 私のバンドルを使用しているすべての人に、base.html.twig に行を追加するように依頼します。

<script>2)ライブラリを埋め込むためのタグをフォーム ウィジェットに追加します

どちらもあまり頭が良くないので、私の質問は次のとおりです。特に、フォームの種類を 1 つのページに複数回含めることができる場合。さらに悪いことに、私のフォーム タイプがたとえば JQuery の存在を要求しているが、JQuery がアプリケーションに既にロードされているかどうかはわかりません。

4

1 に答える 1

0

バンドルのユーザーが実際に JS を含める場所を制御できないため (ファイルには含まれていないが、アプリケーションのメイン バンドルで::base.html.twig呼び出されるファイルに含まれているプロジェクトを知っlayout.html.twigています)、良い方法です。次のように、Assetic を介してインクルードできる JavaScript ファイルを提供することです。

{% javascripts debug=false output="js/bundles.js"
    '@YourVendorAndBundleName/Resources/public/js/formtype.js'
%}
    <script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

したがって、基本的には、必要なものすべてを にある 1 つのファイルに保存するだけです{yourBundle}/Resources/public/js。symfony2 コマンドassets:installが残りを行います。

このようにして、ユーザーは JS を他のベンダーの JS と一緒に 1 つのファイルに保存し、それを使って縮小などの処理を行うことができます。

重要: これをインストール/使用ガイドに必ず追加してください。


JS コードが jQuery などのサードパーティの JS ライブラリに依存している場合、Symfony2 クックブックにあるように、それらを追加しないでください: http://symfony.com/doc/master/cookbook/bundles/best_practices.html#vendors

代わりに、ここで言及されているように、特定の名前を持つ特定のアセットを要求することができます: Symfony 2 で共通の javascript 依存関係を管理する

于 2014-02-28T10:14:46.240 に答える