Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/11/2016, 21:41
X_fran
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: Consulta para llenar Select

Bueno, la respuesta está en emplear un evento en la clase del formulario, de tipo PRE_SET_DATA, de manera tal que se tome el tipo de estructura, ese si si le establece al entity asociado al formulario, y basado en este, establecer un queryBuilder para el input de tipo select que se desea popular, de la siguiente forma:
Código PHP:
Ver original
  1. $builder->addEventListener(
  2.                 FormEvents::PRE_SET_DATA, function (FormEvent $event)
  3.         {
  4.             $data = $event->getData();
  5.             $form = $event->getForm();
  6.  
  7.             if ($event->getData()->getId() === NULL)
  8.             {
  9.                 $nodoPadre = $data->getParent();
  10.  
  11.                 $tipoEstructuraNodoPadre = $nodoPadre->getTipoEstructuraOrganizativa()->getId();
  12.  
  13.                 $formOptions = array(
  14.                     'label' => 'Tipo de Estructura',
  15.                     'class' => 'AppBundle:TipoEstructuraOrganizativa',
  16.                     'query_builder' => function(EntityRepository $er) use($nodoPadre)
  17.                     {
  18.                         return $er->findAllTiposPermitidosComoHijosQueryBuilder($nodoPadre);
  19.                     },
  20.                     'choice_label' => 'nombre',
  21.                 );                
  22.  
  23.                 $form->add('tipoEstructuraOrganizativa', EntityType::class, $formOptions);              
  24.                
  25.             }
  26. // en caso que el formulario esté en modo edicion, no se mostrará el control.
  27.         });