【问题标题】:Symfony: Attach class to all widgets using form themingSymfony:使用表单主题将类附加到所有小部件
【发布时间】:2014-04-15 14:12:44
【问题描述】:

正如标题所说,我正在尝试将引导程序 form-control 类附加到每个生成的输入或小部件,因为它们在 twig 中被调用。我正在尝试使用表单主题来轻松制作看起来相同的多个表单。
我正在以与设法使其与标签一起使用的相同方式尝试它。但是因为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 %}

【问题讨论】:

  • 你已经在使用application-wide customizations了吗? 以与我设法使其与标签一起使用的相同方式请显示执行此操作的代码,以便我们可以更好地为您提供帮助。
  • 仅用于表单控件、标签、小部件和错误。我已经发布了标签脚本,我尝试以相同的方式进行操作,但似乎它被树枝继承覆盖了。而且我不想为每个小部件复制粘贴相同的代码,因为那样会违背目的,不是吗?

标签: symfony twig


【解决方案1】:

您必须编辑form_rowblock,它将修改简单和复合小部件。

{% 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 %}

最后两行读起来很费劲,希望你能明白。

【讨论】:

  • 这个问题有一年多了!为这项努力点赞
  • 天啊,虽然才1个月大,希望对大家有所帮助
猜你喜欢
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多