Symfony:使用表单主题将类附加到所有小部件

时间:2014-04-15 14:12:44

标签: symfony twig

正如标题所示,我正在尝试将引导程序form-control类附加到每个生成的输入或窗口小部件,因为它们在树枝中被调用。我正在尝试使用表格主题来轻松制作看起来相同的多种形式 我正在尝试它,就像我设法让它与标签一起工作一样。但是因为form_widget块是由其他块(form_widget_simple& form_widget_compound)继承的。

这是给我带来麻烦的代码

{% block form_widget %}
{% spaceless %}
<div class="col-sm-10">

{% set attr = attr|merge({'class': (attr.class|default('') ~ ' form-control ')|trim}) %}
{% if compound %}
    {{ block('form_widget_compound') }}
{% else %}
    {{ block('form_widget_simple') }}
{% endif %}

</div>
{% endspaceless %} 
{% endblock form_widget %}

此外,col-sm-10 div仅在从form_widget_simple继承的小部件上呈现,而不是在复合小部件上呈现。

我不知道我是否已经清楚地解释了这一点,但我们将非常感谢任何帮助。

{% block form_label %}
{% spaceless %}
    {% if label is not sameas(false) %}
        {% if not compound %}
            {% set label_attr = label_attr|merge({'for': id}) %}
        {% endif %}
        {% if required %}
            {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required ')|trim}) %}
        {% endif %}
        {% if label is empty %}
            {% set label = name|humanize %}
        {% endif %}
        {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' col-sm-2 control-label ')|trim}) %}
<label {% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}" {% endfor %}>{{ label|trans({}, translation_domain) }}</label>
    {% endif %}
{% endspaceless %}
{% endblock form_label %}

1 个答案:

答案 0 :(得分:2)

您必须编辑form_row块,它将修改简单和复合窗口小部件。

{% block form_row -%}
        {{- form_label(form) -}}
        <div class="col-sm-10">
               {{- form_widget(form) -}}
               {{- form_errors(form) -}}
         </div>
{%- endblock form_row %}

编辑:对于控制表类

您可以在块widget_attributes

中添加它
{% block widget_attributes -%}
    {% set class = 'form-control' %}
id="{{ id }}" name="{{ full_name }}"{% if read_only %} readonly="readonly"{% endif %}{% if disabled %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %}
    {% for attrname, attrvalue in attr %}{% if attrname in ['placeholder', 'title'] %}{{ attrname }}="{{ attrvalue|trans({}, translation_domain) }}" {% elseif  attrname in ['class'] %} {% set class = class ~ ' ' ~ attrvalue %} {% else %}{{ attrname }}="{{ attrvalue }}" {% endif %}{% endfor %}
class="{{ class }}"
{%- endblock widget_attributes %}

最后两行非常强烈阅读,希望你能得到图片。