0

有没有办法根据输入类型在输入的根 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 %}

但是“类型”总是等于“文本”。

4

1 回答 1

2

不是一个特别好的解决方案,但似乎block_prefixes已传递给 block 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 %}

我确信有比这更好的方法,尽管我只是不介意。

Ps 类型未定义,这就是为什么text当您将其设置为默认文本时它总是适合您的原因

于 2013-06-21T10:36:02.607 回答