Mi respuesta es muy similar a la de nni6 pero le permite pasar a través de toda la matriz attr.
Mi estructura HTML es para Twitter Bootstrap pero puede tener lo que quiera. Este ejemplo también pone una clase de error en el div contenedor si hay algún error - no se requiere esta parte, pero es útil si se utiliza Bootstrap:
{% extends 'form_div_layout.html.twig' %}
{% block field_row %}
{% spaceless %}
{% set field_row_classes = ['control-group'] %}
{% if errors|length > 0 %}
{% set field_row_classes = field_row_classes|merge(['error']) %}
{% endif %}
<div class="{{ field_row_classes|join(' ') }}">
{{ form_label(form, label|default(null)) }}
<div class="controls">
{{ form_widget(form, { 'attr' : attr|default({}) }) }}
{{ form_errors(form) }}
{% if help is defined %}
<p class="help-block">{{ help }}</p>
{% endif %}
</div>
</div>
{% endspaceless %}
{% endblock field_row %}
La diferencia aquí es que estoy llamando form_widget
con el attr
array (si se especificó, por defecto {})
Ahora se pueden configurar su forma normal, pero como pasar a través de una clase personalizada:
{{ form_row(myentity.myproperty, { 'label' : 'mylabel', 'attr' : { 'class' : 'myclass' }}) }}
Usted puede utilizar form_widget como un trabajo alrededor. Parece que debería funcionar con form_row, pero no lo he investigado. – Cerad
Estaba buscando utilizar 'etiqueta' y 'attr' en el mismo form_row. ¡Gracias! –