Tipo de campo entity

Un campo choice especial que está diseñado para cargar las opciones de una entidad Doctrine. Por ejemplo, si tiene una entidad Categoria, puedes utilizar este campo para mostrar un campo select todos o algunos de los objetos Categoria de la base de datos.

Rendered as can be various tags (see Etiqueta select, casillas de verificación o botones de radio)
Options
Inherited options
Parent type choice
Class Symfony\Bridge\Doctrine\Form\Type\EntityType

Uso básico

El tipo entidad tiene una sola opción obligatoria: la entidad que debe aparecer dentro del campo de elección:

$builder->add('users', 'entity', array(
    'class' => 'AcmeHelloBundle:User',
    'property' => 'username',
));

En este caso, todos los objetos Usuario serán cargados desde la base de datos y representados como etiquetas select, botones de radio o una serie de casillas de verificación (esto depende del valor multiple y expanded). Si el objeto entidad no tiene un método __toString() la opción property es necesaria.

Usando una consulta personalizada para las Entidades

Si es necesario especificar una consulta personalizada a utilizar al recuperar las entidades (por ejemplo, sólo deseas devolver algunas entidades, o necesitas ordenarlas), utiliza la opción query_builder. La forma más fácil para utilizar la opción es la siguiente:

use Doctrine\ORM\EntityRepository;
// ...

$builder->add('users', 'entity', array(
    'class' => 'AcmeHelloBundle:User',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')
            ->orderBy('u.username', 'ASC');
    },
));

Etiqueta select, casillas de verificación o botones de radio

Este campo se puede reproducir como uno de varios campos HTML, dependiendo de las opciones expanded y multiple:

tipo elemento expandido múltiple
etiqueta de selección false false
etiqueta de selección (con atributo multiple) false true
botones de radio true false
caja de verificación (checkboxes) true true

Opciones del campo

class

tipo: string required

La clase de tu entidad (por ejemplo, AcmeStoreBundle:Category). Este puede ser un nombre de clase completo (por ejemplo, Acme\StoreBundle\Entity\Category) o el nombre del alias corto (como te mostramos anteriormente).

property

tipo: string

Esta es la propiedad que se debe utilizar para visualizar las entidades como texto en el elemento HTML. Si la dejas en blanco, el objeto entidad será convertido en una cadena y por lo tanto debe tener un método __toString().

group_by

tipo: string

Esta es una propiedad ruta (por ejemplo, author.name) usada para organizar en grupos las opciones disponibles. Sólo funciona cuando se representa como una etiqueta de selección y lo hace añadiendo etiquetas optgroup en torno a las opciones. Las opciones que no devuelvan un valor para esta propiedad ruta se dibujan directamente debajo de la etiqueta de selección, sin un optgroup circundante.

query_builder

tipo: Doctrine\ORM\QueryBuilder o un Closure

Si lo especificas, se utiliza para consultar el subconjunto de opciones (y el orden) que se debe utilizar para el campo. El valor de esta opción puede ser un objeto QueryBuilder o un Cierre. Si utilizas un Cierre, este debe tener un sólo argumento, el cual es el EntityRepository de la entidad.

em

tipo: string predefinido: el gestor de la entidad

Si lo especificas, el gestor de la entidad especificada se utiliza para cargar las opciones en lugar de las predeterminadas del gestor de la entidad.

Opciones heredadas

Estas opciones las hereda del tipo choice:

multiple

tipo: Boolean predeterminado: false

Si es true, el usuario podrá seleccionar varias opciones (en contraposición a elegir sólo una opción). Dependiendo del valor de la opción expanded, esto reproducirá una etiqueta de selección o casillas de verificación si es true y una etiqueta de selección o botones de radio si es false. El valor devuelto será un arreglo.

Nota

If you are working with a collection of Doctrine entities, it will be helpful to read the documention for the Tipo de campo Collection as well. In addition, there is a complete example in the cookbook article Cómo integrar una colección de formularios.

expanded

tipo: Boolean predeterminado: false

Si es true, los botones de radio o casillas de verificación se reproducirán (en función del valor de multiple). Si es false, se reproducirá un elemento de selección.

preferred_choices

tipo: array predeterminado: array()

Si se especifica esta opción, entonces un subconjunto de todas las opciones se trasladará a la parte superior del menú de selección. Lo siguiente debe mover la opción «Baz» a la parte superior, con una separación visual entre esta y el resto de las opciones:

$builder->add('foo_choices', 'choice', array(
    'choices' => array('foo' => 'Foo', 'bar' => 'Bar', 'baz' => 'Baz'),
    'preferred_choices' => array('baz'),
));

Ten en cuenta que las opciones preferidas sólo son útiles cuando se reproducen como un elemento select (es decir, expanded es false). Las opciones preferidas y las opciones normales están separadas visualmente por un conjunto de líneas punteadas (es decir, -------------------). Esto se puede personalizar cuando reproduzcas el campo:

  • Twig
    {{ form_widget(form.foo_choices, { 'separator': '=====' }) }}
    
  • PHP
    <?php echo $view['form']->widget($form['foo_choices'], array('separator' => '=====')) ?>
    

empty_value

tipo: string o Boolean

Esta opción determina si o no una opción empty especial (por ejemplo, «Elige una opción») aparecerá en la parte superior de un elemento gráfico de selección. Esta opción sólo se aplica si ambas opciones expanded y multiple se establecen en false.

  • Añade un valor vacío con «Elige una opción», como el texto:

    $builder->add('states', 'choice', array(
        'empty_value' => 'Choose an option',
    ));
    
  • Garantiza que ninguna opción con valor empty se muestre:

    $builder->add('states', 'choice', array(
        'empty_value' => false,
    ));
    

Si dejas sin establecer la opción empty_value, entonces automáticamente se añadirá una opción con espacio en blanco (sin texto) si y sólo si la opción required es false:

// añadirá una opción de espacio en blanco (sin texto)
$builder->add('states', 'choice', array(
    'required' => false,
));

Estas opciones las hereda del tipo field:

required

tipo: Boolean predeterminado: true

Si es true, reproducirá un atributo required de HTML5. La label correspondiente será reproducida con una clase required.

Esto es superficial e independiente de la validación. A lo sumo, si dejas que Symfony deduzca el tipo de campo, entonces el valor de esta opción, se puede inferir a partir de tu información de validación.

label

tipo: string predefinido: La etiqueta se «deduce» a partir del nombre del campo

Establece la etiqueta que se utilizará al reproducir el campo. La etiqueta también se puede fijar directamente dentro de la plantilla:

{{ form_label(form.name, 'Tu nombre') }}

read_only

Nuevo en la versión 2.1: The read_only option was changed in 2.1 to render as a readonly HTML attribute. Previously, it rendered as a disabled attribute. Use the disabled option if you need the old behavior.

tipo: Boolean predeterminado: false

If this option is true, the field will be rendered with the readonly attribute so that the field is not editable.

disabled

Nuevo en la versión 2.1: The disabled option is new in version 2.1

type: boolean default: false

Si no deseas que un usuario pueda modificar el valor de un campo, puedes establecer la opción disabled en true. Cualquier valor recibido será omitido.

error_bubbling

tipo: Boolean predeterminado: false

Si es true, los errores de este campo serán pasados al campo padre o al formulario. Por ejemplo, si estableces en true un campo normal, cualquier error de ese campo se adjuntará al formulario principal, no al campo específico.

Bifúrcame en GitHub