Exemple #1
0
 protected function configureFormFields(FormMapper $formMapper)
 {
     parent::configureFormFields($formMapper);
     $formMapper->tab('User')->with('General')->add('empresa', 'sonata_type_model_list', ['label' => 'Empresa', 'required' => true, 'btn_delete' => false], ['placeholder' => 'Seleccionar Empresa'])->add('organizacion')->end()->end();
     $builder = $formMapper->getFormBuilder();
     $factory = $builder->getFormFactory();
     $refreshOrganizacion = function ($form, $empresa) use($factory) {
         $form->add($factory->createNamed('organizacion', 'entity', null, ['auto_initialize' => false, 'class' => 'AppBundle:Organizacion', 'mapped' => true, 'label' => 'Organización', 'placeholder' => 'Seleccione Organización', 'empty_data' => null, 'required' => false, 'query_builder' => function (EntityRepository $repository) use($empresa) {
             $qb = $repository->createQueryBuilder('organizacion');
             if ($empresa instanceof Empresa) {
                 $qb = $qb->where('organizacion.empresa = :empresa')->setParameter('empresa', $empresa);
             } elseif (is_numeric($empresa)) {
                 $qb = $qb->where('organizacion.empresa = :empresa_id')->setParameter('empresa_id', $empresa);
             } else {
                 $qb = $qb->where('0 = 1');
             }
             return $qb;
         }]));
     };
     // Populate ddl to show form
     $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($refreshOrganizacion, $factory) {
         $data = $event->getData();
         $form = $event->getForm();
         // Test if null because this event is called 2 times, only the second time with the actual Lesson object (which has null values in the creation case)
         if ($data !== null) {
             // In case of creation
             if ($data->getEmpresa() === null) {
                 // Creates empty fields
                 $refreshOrganizacion($form, null);
             } else {
                 if ($data->getEmpresa() !== null) {
                     $refreshOrganizacion($form, $data->getEmpresa());
                 } else {
                     $refreshOrganizacion($form, null);
                 }
             }
         }
     });
     // Populate ddl when form was posted
     $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use($refreshOrganizacion) {
         $form = $event->getForm();
         $data = $event->getData();
         if (array_key_exists('empresa', $data)) {
             $refreshOrganizacion($form, $data['empresa']);
         }
     });
     // Select value in ddl when editing
     $builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use($refreshOrganizacion) {
         $data = $event->getData();
         $form = $event->getForm();
         if (null === $data || null === $data->getId()) {
             return;
         }
         if ($data->getOrganizacion() !== null) {
             $form->get('organizacion')->setData($data->getOrganizacion());
         }
     });
 }
 protected function configureFormFields(FormMapper $formMapper)
 {
     parent::configureFormFields($formMapper);
 }