是否有办法根据输入类型在输入的根div上应用特定的类?
例如:
<div class="radio-input">
<input...
....
</div>
我尝试使用以下方法重载“fields.html.twig”:
{% block form_row %}
{% spaceless %}
{% set type = type|default('text') %}
<div class="{{ type }}-input">
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}
但“type”总是等于“text”。
答案 0 :(得分:2)
不是一个特别好的解决方案,但似乎block_prefixes
传递给阻止form_row
。 Block_prefixes是表单字段类型的数组,按继承顺序排列,因此名为first name的文本字段将具有block_prefixes数组,如:
block_prefixes = array("form","field","text","first_name")
这意味着您可能从最后一个数组元素获得第二个并使用它:
{% block form_row %}
{% spaceless %}
<div class="{{ (block_prefixes|slice((block_prefixes|length - 2),1))|first }}-input">
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}
我确信有一种比这更好的方法虽然我没有想到它。
P.s type是未定义的,这就是为什么它总是text
,因为你将它设置为默认为文本