为不同的表单类型自定义form_row

时间:2015-05-04 15:33:40

标签: forms symfony twig

我想为不同的表单类型设置不同的form_row布局。我在名为“choice_widget_collapsed”的模板块中找到了它,但它只渲染带选项的select标签。

我找不到这个块的使用位置。实际上它似乎是渲染而不是form_widget块。我想有一个switch / if结构检查表单类型并呈现适当的块,但我不知道在哪里找到这个开关,或者不知道如何检查form_row块内的输入类型。

我知道可以在form.vars.block_prefixes数组中找到块类型,但是这个sux,因为它的位置可能会在将来发生变化。

所以问题是:如何根据表单字段类型使form_row显示不同的东西?

1 个答案:

答案 0 :(得分:1)

您应该覆盖您主题中的普通块。这个块应该像这样工作:

{% block form_appropriate_block %}
    {% spaceless %}
        {% if form.vars.widget = 'myIntendedWidgetType' %}
            [yourTemplate]
        {% else %}
            {{ parent() }}
        {% endif %}
    {% endspaceless %}
{% endblock form_appropriate_block %}

然后,在您的模板中,使用以下命令激活主题:

{% form_theme form 'MyBundle:Form:formTheme.html.twig' %}

通过这种方式,您的表单主题仅在需要时使用,如果类型不是您想要的类型,则会回退到正常行为。