如何使用Symfony2设置窗口小部件类型的css类

时间:2013-06-21 09:46:34

标签: css symfony widget twig

是否有办法根据输入类型在输入的根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”。

1 个答案:

答案 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,因为你将它设置为默认为文本