Entonces como sería??
Tengo una tabla con los codigos postales y otra con los usuarios
El usuario tiene una referencia al codigo postal
Partiendo que esta grabado en la base de datos y quiero modificar los datos de usuario, en el controlador hago los siguiente:
$em = $this->getDoctrine()->getEntityManager();
$usuario = $em->getRepository('UsuarioBundle:Usuario')->findOneByid($this->get('security.context')->getToken()->getUser()->getId());;
$formulario = $this->createForm(new ModificaUsuarioType(), $usuario);
Y el formulario ModificaUsuarioType:
$builder
->add('nombre')
// ...
->add('cpostal_id', 'entity', array(
'class' => 'PedidoBundle:CodigoReparto',
'property_path' => false,
'multiple' => false,
'expanded' => false,
'label' => false,
'query_builder' => function(EntityRepository $em) {
$db= $em->createQueryBuilder('p');
$db->where('p.activo = :activo');
$db->orderBy('p.cpostal');
$db->setParameter('activo', '1');
return $db;
}))
En este caso, me rellena bien los datos. Me muestra un combo con los código postal mostrados como activo=1 (perfecto) pero por defecto seleccionado el primer valor del combo, no el que está guardardado en la base de datos.