如果您要求我将 attr 移至您的表单类,则更有意义:
class SomeForm extends AbstractType {
//.....
$builder->add('name', 'text', array('attr' => array('placeholder'=>'Nom')));
}
由于我猜您需要为某些字段进行一些自定义渲染,因此您可以检查:
http://symfony.com/doc/2.0/cookbook/form/form_customization.html#how-to-customize-an-individual-field
您还可以创建一个新类型并按照此处的说明对其进行自定义:
http://symfony.com/doc/2.0/cookbook/form/form_customization.html#what-are-form-themes
你甚至可以改变默认的渲染方式,并让 symfony 使用字段的标签字符串默认渲染你的占位符标签(全局启用表单主题的细节在上面引用的链接中介绍):
{% block text_widget %}
{% set type = type|default('text') %}
<input type="text" {{ block('widget_attributes') }} value="{{ value }}" />
{% endblock field_widget %}
{% block widget_attributes %}
{% spaceless %}
{% for attrname,attrvalue in attr %}{{attrname}}="{{attrvalue}}" {% endfor %} placeholder="{{ label|trans }}"
{% endspaceless %}
{% endblock widget_attributes %}
{% block form_row %}
{% spaceless %}
<div class="my-class">
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}
因此,您将使用 symfony 提供的主题将自己限制在一个 form_row(form.name) 中。Symfony 的方法在我看来“非常”干/死。希望能帮助到你。