formularios form_widget form custom php forms class symfony

php - form_widget - ¿Cómo se ocultan las etiquetas en una clase de formulario en Symfony2?



formularios symfony 3 (6)

Sé que puedes dividir un formulario en ramitas y elegir no mostrar la etiqueta para un campo en particular, pero no puedo evitar pensar que debes ser capaz de hacer esto desde la clase de formulario. La tecla ''etiqueta'' en la matriz de opciones le permite cambiar este valor a lo que quiera, pero pasar una cadena falsa o una cadena vacía simplemente devuelve el nombre del campo (vea ejemplos a continuación donde se representa ''roles'' como la etiqueta).

$builder ->add(''roles'', ''entity'', array( ''class'' => ''Acme/UserBundle/Entity/Role'', ''label'' => '''' )); $builder ->add(''roles'', ''entity'', array( ''class'' => ''Acme/UserBundle/Entity/Role'', ''label'' => false ));

Extrañamente, pasar un espacio vacío (que se siente muy sucio) parece representar una etiqueta completamente vacía, sin espacio incluso cuando se ve la fuente. ¿Alguien puede arrojar alguna luz sobre el mejor enfoque, o incluso por qué el espacio vacío parece funcionar?


Mantenga sus especificaciones de ''Vista'' separadas de su ''Modelo''

Si sigues la respuesta aceptada que dice:

$builder ->add(''Name'', null, array(''label'' => false)) ;

su formulario no es tan reutilizable. Especialmente si su formulario aparece en más de una ubicación (o podría en el futuro).

Si no desea representar la etiqueta del formulario, lo mejor es hacerlo en Twig (suponiendo que usa Twig).

en lugar de representar {{ form_row(form.name) }} , renderizar cada elemento por separado y excluir form_label

ex.

{{ form_errors(form.name) }} {# {{ form_label(form.name) }} <-- just dont include this #} {{ form_widget(form.name) }}

Si en el camino deseaba la etiqueta en una instancia de la forma pero no en la otra, basta con agregar {{ form_label(form.name) }} ; Donde la array(''label'' => true) variable array(''label'' => true) cambiará la etiqueta en todas partes

Si está procesando su formulario con el delineador {{ form(form) }} entonces debería echar un vistazo a los documentos de symfony


Desde Symfony 2.2 puede evitar la representación de <label> utilizando el valor false para el atributo de label :

public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add(''Name'', null, array(''label'' => false)) ; }

Source


No entiendo muy bien su pregunta, pero en la forma de mostrar el nombre de la etiqueta, personalmente me gusta eso:

$builder ->add(''role'', ''text'')

en mi ramita:

<tr> <td>{{ form_widget(form.role) }} </td> <td>{{ form_label(form.role, "Name of Label") }}</td> </tr> <tr> <td>{{ form_errors(form.role) }}</td> </tr>


Para ocultar mi etiqueta, tuve que representar solo el widget para el campo, y no la etiqueta, por ejemplo

{{ form_widget(edit_form.event) }} {{ form_rest(edit_form) }}

El problema con la etiqueta '''' con un espacio en, es que todavía representa la entrada html que está allí y afecta la página.


Simplemente agregue {''label'': false} a su form_row ()

{{ form_row(form.name, {''label'':false}) }}


esto debería funcionar (aunque no es una solución muy limpia)

$builder ->add(''roles'', ''entity'', array( ''class'' => ''Acme/UserBundle/Entity/Role'', ''label'' => '' '' ));

(tenga en cuenta el espacio entre los tics)