1

星を表示するためのカスタムフォームタイプを作成します(基本的に5つのラジオボタン)。レンダリング用のカスタムブロックを作成します。

{% block star_rating_widget %}
    {% spaceless %}
        <div {{ block('widget_container_attributes') }}>
            {% for child in form %}
                    {{ form_widget(child) }}
            {% endfor %}
        </div>
    {% endspaceless %}
{% endblock %}

このブロックは、デフォルトのradio_widgetブロックを使用して5つのラジオボタンを正常にレンダリングします。

{% block radio_widget %}
    {% spaceless %}
        <input type="radio" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
    {% endspaceless %}
{% endblock radio_widget %}

いくつかのクラスと属性を追加するためにradio_widgetブロックをオーバーライドする方法を知る必要がありますが、star_rating_block内でレンダリングする場合のみです。

4

2 に答える 2

4

考えられる解決策:

{% block radio_widget %}
    {% if "custom_widget" in form.parent.vars.block_prefixes %}
        // custom view 
    {% else %}
        // default view from form_div_layout.html.twig 
    {% endif %} 
{% endblock radio_widget %}
于 2013-06-18T09:08:28.780 に答える
2

form_widget2 番目の引数を介して変数を渡すことができます。基本的に、カスタム タイプで一連のオプションを許可し、twig 関数を介して渡します。

{{ form_widget(child, {attr: {class: classNameVar}}) }} {# passing some classes through the variable classNameVar

詳細については、twig テンプレート フォーム関数と変数参照に関するドキュメントを参照してください

同じドキュメントで、さまざまなフォーム変数に関する情報を見つけることができます。

于 2013-03-20T05:33:58.240 に答える