1

我正在创建一个自定义表单类型,用于显示星级评分(基本上是五个单选按钮)。我为渲染创建了一个自定义块:

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

此块使用默认的 radio_widget 块渲染五个单选按钮。

{% 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_widget第二个参数将变量传递给。您基本上会在您的自定义类型中允许一组选项,并将它们传递给 twig 函数。

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

您可以在有关 twig 模板表单函数和变量引用的文档中找到更多信息。

在同一文档中,您可以找到有关不同表单变量的信息。

于 2013-03-20T05:33:58.240 回答