Meine Antwort ist sehr ähnlich wie nni6 ist, aber es ermöglicht es Ihnen, durch die gesamte attr Array übergeben.
Meine HTML-Struktur ist für Twitter Bootstrap, aber Sie können haben, was Sie wollen. Dieses Beispiel stellt auch eine Fehlerklasse auf dem Wrapper div ob es irgendwelche Fehler sind - dieser Teil ist nicht erforderlich, aber ist nützlich, wenn Sie Bootstrap verwenden:
{% 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 %}
Der Unterschied hier ist, dass ich form_widget
mit den attr
bin Aufruf Array (wenn es angegeben wurde, ist voreingestellt auf {})
Jetzt können Sie Ihre Form als normal eingerichtet, aber eine benutzerdefinierte Klasse durchlaufen:
{{ form_row(myentity.myproperty, { 'label' : 'mylabel', 'attr' : { 'class' : 'myclass' }}) }}
Sie als Arbeit um verwenden form_widget können. Es scheint, als ob es mit form_row funktionieren sollte, aber ich habe es nicht untersucht. – Cerad
Ich wollte "Label" und "Attr" in der gleichen Form_row verwenden. Danke! –