делает больше смысла, если вы спросите меня переместить 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 %}
Таким образом, вы бы ограничивать себя form_row (form.name) с помощью тематизации, что обеспечивает Symfony. Приближение Symfony выглядит «очень» DRY/DIE для меня. Надеюсь, это поможет.