2016-03-23 7 views
1

私は小さな問題があります。私は多くのカスタムフォームフィールドを作成し、各フィールドに必要なCSS/jsファイルを追加します。カスタムフォームフィールドからアセットをレンダリングします。

この例では、このフィールドに「testType」という名前を付けます。

私はformThemeにそれを追加します。

{% stylesheets 
      'plugins/test.min.css'filter='cssrewrite' output='compiled/css/test.css' %} 
      <link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 
<input id="{{ id }}" {{ block('widget_attributes') }} type="{{ type }}" value="{{ value is not empty ? value : '' }}"> 

すべてが正常に動作しますが、私はこの同じフィールドを何度も使用する場合。それらは何度も追加されます。

form_startまたはform_endに一度だけ追加したり、一意のcss/jsファイルに追加するプラグインを追加するにはどうすればよいですか?

答えて

1

form_start blockを上書きする必要があります。

{% block form_start %} 
{% spaceless %} 
    {% set method = method|upper %} 
    {% if method in ["GET", "POST"] %} 
     {% set form_method = method %} 
    {% else %} 
     {% set form_method = "POST" %} 
    {% endif %} 

    {% stylesheets 
     'plugins/test.min.css'filter='cssrewrite' output='compiled/css/test.css' %} 
     <link rel="stylesheet" href="{{ asset_url }}" /> 
    {% endstylesheets %} 

    <form method="{{ form_method|lower }}" class="form-horizontal" 
     action="{{ action }}"{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}{% if multipart %} enctype="multipart/form-data"{% endif %}> 
    {% if form_method != method %} 
     <input type="hidden" name="_method" value="{{ method }}" /> 
    {% endif %} 
{% endspaceless %} 
{% endblock form_start %} 

こちらのフォームのカスタマイズについて詳しく読む:http://symfony.com/doc/current/cookbook/form/form_customization.html

+0

はあなたの応答をあなたにパヴェルありがとうございます。 あなたの回答は私の問題の一部です。 私は必要なファイルのみをインポートします。したがって、指定したフィールドが自分のフォームで使用されている場合は、そのフィールドを保存する必要があります。たぶん、グローバル変数で、次に必要なファイルだけをレンダリングします。しかし、私はどのように見つけることができません。 – Micchaleq

+0

多分あなたはこの要素のための特別なブロックを作り、毎回それを値で上書きすることができますか?そして最後に、あなたは一度だけそこにいます。 –

+0

私はform_startに変数を設定し、それをform_endでレンダリングしようとしましたが、ブロックからの変数は別のブロックで消滅しています。私はグローバルな小枝変数もテストしましたが、状況は同じです。変更は、私が変更したブロックでのみ表示されます。ですから、問題はブロックから情報を保存し、それを別のブロックに表示する方法です。 – Micchaleq

関連する問題