2016-07-13 7 views
1

私はSymfonyフォームで使用するいくつかの「ウィジェット」を持っています。これらは、日付ピッカーフィールド、カラーピッカーフィールド、ファンシーコンボボックスなどです。私はそうのように、別の小枝ファイル内の各1のテンプレートを保つ:新しいブロックをTwigテンプレートに追加する

# start of color_widget.html.twig 
{% block color_widget %} 
<div id="{{ id }}" class="input-group colorpicker-component"> 
    <span class="input-group-addon"><i></i></span> 
    <input type="text" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %} class="form-control" /> 
</div> 
<script> 
    $(function() { 
     $('#{{ id }}').colorpicker(); 
    }); 
</script> 
{% endblock %} 
# end of color_widget.html.twig 

さて、現在の設定では、私はすべてのことを維持する必要があります一つの大きなテンプレート内のブロック。しかし、これらの別々のファイルから定義されたブロックを含めるためにループを作りたいと思います。

{% for widget in _widgets %} 
    {% use widget.path %} 
{% endfor %} 

しかし、使用などのタグは、それが動作しない変数をサポートしていません。このようなもので

{% use "@CoreWidgets/color/widget.html.twig" %} 
{% use "@CoreWidgets/date_picker/widget.html.twig" %} 
{% use "@OtherWidget/widget.html.twig" %} 

:基本的に私はこれを代入しようとしています。

私は、CSS、JS、Twigテンプレート(フォーム要素用とエンティティ情報を示すページ要素用)の1つの場所に格納する素晴らしいウィジェットパッケージを用意したいので、このようなアプローチが欲しいです。それから設定ファイルにそのパッケージを定義し、すべてをきちんと設定して保存することができました。

これを行う方法はありますか?

答えて

0

それは素晴らしい解決策ではないのですが、あなたは、各ウィジェットのuse文を含むファイルを含めることができますので、

{# file 2 : file that include it : #} 
{% for widget in _widgets %} 
    {% include widget.path %} 
{% endfor %} 

ウィジェット:

{# file 1 : file that calls the use tag : #} 
{% use "@CoreWidgets/color/widget.html.twig" %} 

は次にそれをあなたが望んでいた方法が含まれます。パスはファイル1のパスを格納する必要があります。

関連する問題