form_widget form_theme form custom change _self php forms symfony input formbuilder

php - form_theme - Cómo establecer un atributo de clase en una entrada de formulario Symfony2



symfony form change label (7)

¿Cómo puedo establecer el atributo de class HTML en un formulario <input> usando FormBuilder en Symfony2 ?

Algo como esto:

->add(''birthdate'', ''date'',array( ''input'' => ''datetime'', ''widget'' => ''single_text'', ''attr'' => array( ''class'' => ''calendar'' ) )) {{ form_widget(form.birthdate) }}

Quiero este campo de input con la class atributo establecida en calendario


La respuesta de Acyra conduce correctamente si desea establecer atributos dentro del controlador, pero tiene muchas imprecisiones.

Sí, puede hacerlo directamente con FormBuilder utilizando el atributo attr (introducido here para la versión 2.1 y aquí para el 2.0 ) para la matriz de opciones de la siguiente manera:

->add(''birthdate'', ''date'',array( ''input'' => ''datetime'', ''widget'' => ''single_text'', ''attr'' => array(''class''=>''calendar'') ))

No es cierto que la "funcionalidad está rota". ¡Funciona muy bien!

No es cierto que Symfony2 aplique el atributo de class HTML a la etiqueta y a la entrada (al menos desde la versión 2.1).

Además, dado que el atributo attr es una matriz en sí misma, puede pasar cualquier atributo HTML que desee representar para el campo. Es muy útil si quiere pasar los atributos de data- HTML5.


Me gusta esto:

{{ form_widget(form.description, { ''attr'': {''class'': ''form-control'', ''rows'': ''5'', ''style'': ''resize:none;''} }) }}


Puede agregarlo en las opciones de su clase de formulario:

public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( ''data_class'' => ''AppBundle/Entity/MyEntity'', ''attr'' => array( ''class'' => ''form-horizontal'' ) )); }



Puedes hacerlo con FormBuilder. Agregue esto a la matriz en su FormBuilder:

''attr''=> array(''class''=>''span2'')


Representa el widget HTML de un campo determinado. Si aplica esto a un formulario completo o conjunto de campos, se representará cada fila de formulario subyacente.

{# render a field row, but display a label with text "foo" #} {{ form_row(form.name, {''label'': ''foo''}) }}

El segundo argumento para form_row () es una matriz de variables. Las plantillas proporcionadas en Symfony solo permiten anular la etiqueta como se muestra en el ejemplo anterior.

Consulte "Más sobre las variables de formato" para obtener más información sobre el argumento de variables.


{{ form_widget(form.content, { ''attr'': {''class'': ''tinyMCE'', ''data-theme'': ''advanced''} }) }}