Desplegable con una relación entre entities en un formulario de Symfony2
En las entidades de Symfony2 es sencillo relacionar un campo con otra tabla con una relación ManyToOne y que este campo solo pueda tomar un valor que esté disponible en la segunda entity. Si creamos un formulario para poder introducir nuevos registros en la base de datos, necesitamos un campo del tipo select para seleccionar uno de los datos de la segunda tabla y relacionarlos.
Deberemos modificar el formulario y añadirle un par de opciones más. En este ejemplo, vamos a relacionar un usuario con su país.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | namespace AcmeMiBundleForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilder; class PerfilType extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $builder->add('pais', 'entity', array( 'class' => 'AcmeMiBundle:Pais' 'label' => 'Pais', ) ); } } |
Que no se nos olvide añadir el método __toString() a la entity Pais:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | namespace AcmeMiBundleEntity; use DoctrineORMMapping as ORM; class Pais { [...] public function __toString() { return $this->getNombre(); } } |
Y así de sencillo, ahora en nuestra plantilla aparecerá automáticamente el campo de tipo select a la hora de seleccionar el país del usuario.
Muy bueno estimado, el unico detalles que en:
‘class’ => ‘AcmeMiBundle:Pais’
‘label’ => ‘Pais’,
Debe ser:
‘class’ => ‘AcmeMiBundle:Pais’,
‘label’ => ‘Pais’,
Con una coma (,) despues de ‘AcmeMiBundle:Pais’
Por lo demas, funciona perfect, gracias
GRACIAS!!!!! Vi muchos ejemplos, pero con el tuyo me anduvo a la primera!
pero como le colocas diseno al select esta muy simple y en mi caso utilzo bootstrap