我想为不同的表单类型设置不同的form_row布局。我在名为“choice_widget_collapsed”的模板块中找到了它,但它只渲染带选项的select标签。
我找不到这个块的使用位置。实际上它似乎是渲染而不是form_widget块。我想有一个switch / if结构检查表单类型并呈现适当的块,但我不知道在哪里找到这个开关,或者不知道如何检查form_row块内的输入类型。
我知道可以在form.vars.block_prefixes数组中找到块类型,但是这个sux,因为它的位置可能会在将来发生变化。
所以问题是:如何根据表单字段类型使form_row显示不同的东西?
答案 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' %}
通过这种方式,您的表单主题仅在需要时使用,如果类型不是您想要的类型,则会回退到正常行为。