【发布时间】:2014-05-25 13:00:03
【问题描述】:
我正在使用 Twig 在 Symfony 2.3 中构建一个项目。我想向表单行块添加一个类。我正在使用一个表单主题文件,其中包含:
{% block form_row %}
<div class="form-row">
{{ form_label(form) }}
{{ form_widget(form) }}
{{ form_errors(form) }}
</div>
{% endblock %}
现在我想在我的一些表单行中添加一个额外的类form-row-split。我不知道如何正确地做到这一点。我几乎可以使用的方式是:
{% block form_row %}
{% set attr = attr|merge({'class': 'form-row' ~ (attr.class is defined ? ' ' ~ attr.class : '') ~ (errors|length > 0 ? ' error' : '')} ) %}
<div {{ block('widget_container_attributes') }}>
{{ form_label(form) }}
{{ form_widget(form) }}
{{ form_errors(form) }}
</div>
{% endblock %}
(注意,我也将error 类逻辑留在了那里,因为它需要保留)。
然后在表单生成器中:
$builder
->add('first_name', 'text', array(
'attr' => array(
'class' => 'form-row-split'
)
));
这几乎可以工作,但它在任何地方都添加了这个类,并将小部件 id 添加到行中!
<div id="myform_first_name" class="form-row form-row-split">
<label for="myform_first_name">First name</label>
<input id="myform_first_name" class="form-row-split" type="text" name="myform[first_name]">
</div>
我能想到一些潜在的解决方案,但没有一个是漂亮或直接的。肯定有一种简单的方法可以做到这一点?
【问题讨论】:
-
为什么不在您的 css 文件中实现
div.form-row-split或label.form-row-split或input.form-row-split而不是简单的form-row-split,而不是在表单生成中找到一个 hack?
标签: symfony twig symfony-forms