Browse Source

FD3-261 Se agrega seteo de campos en formulario por paso de parámetros.

Maximiliano Schvindt 7 years ago
parent
commit
3fdbbe8dd5
1 changed files with 28 additions and 0 deletions
  1. 28 0
      src/FTTHBundle/Admin/ONUAdmin.php

+ 28 - 0
src/FTTHBundle/Admin/ONUAdmin.php

@@ -8,6 +8,9 @@ use Sonata\AdminBundle\Form\FormMapper;
 use Sonata\AdminBundle\Show\ShowMapper;
 use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
 use WorkflowBundle\Admin\WorkflowBaseAdmin;
+use Symfony\Component\Form\FormEvent;
+use Symfony\Component\Form\FormEvents;
+use Doctrine\ORM\EntityRepository;
 
 class ONUAdmin extends WorkflowBaseAdmin
 {
@@ -79,6 +82,31 @@ class ONUAdmin extends WorkflowBaseAdmin
             ->end()
             ->setHelps(array(
                 'nap' => $this->trans("helps.check_address")));
+
+        
+        /*
+         *  Si vienen parámetros por GET de olt=id o psn=string seteamos los campos
+         */
+        $formMapper->getFormBuilder()->addEventListener(FormEvents::PRE_SET_DATA,
+            function (FormEvent $event) use ($formMapper) {
+                $form = $event->getForm();
+                
+                $olt = $this->getRequest()->query->get('olt');
+                if(!is_null($olt)) {
+                    $em = $this->get("doctrine.orm.entity_manager");
+                    $query_olt = $em->createQueryBuilder('o')
+                            ->select('o')
+                            ->from('FTTHBundle:OLT', 'o')
+                            ->where('o.id = :id')
+                            ->setParameter('id', $olt);
+
+                    $form->add('olt', 'entity', array('class' => 'FTTHBundle:OLT', 'query_builder' => $query_olt));
+                }
+                
+                $ponSerialNumber = $this->getRequest()->query->get('psn');
+                $form->add('ponSerialNumber', null, array('data' => $ponSerialNumber));
+            }
+        );        
     }
 
     /**