src/EventSubscriber/EasyAdminSubscriber.php line 21

  1. <?php
  2. // src/EventSubscriber/EasyAdminSubscriber.php
  3. namespace App\EventSubscriber;
  4. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Doctrine\ORM\EntityRepository;
  8. class EasyAdminSubscriber implements EventSubscriberInterface
  9. {
  10.     public static function getSubscribedEvents()
  11.     {
  12.         return [
  13.             BeforeEntityPersistedEvent::class => ['setModeloElemento'],
  14.             BeforeEntityUpdatedEvent::class => ['setModeloElemento'],
  15.         ];
  16.     }
  17.     public function setModeloElemento($event): void
  18.     {
  19.         $entity $event->getEntityInstance();
  20.         if (!($entity instanceof Composicion)) {
  21.             return;
  22.         }
  23.         $form $event->getForm();
  24.         $formOptions $form->get('elemento')->getConfig()->getOptions();
  25.         $formOptions['query_builder'] = function (EntityRepository $er) use ($entity) {
  26.             return $er->createQueryBuilder('e')
  27.                 ->where('e.modelo = :modelo')
  28.                 ->setParameter('modelo'$entity->getModelo());
  29.         };
  30.         $form->add('elemento'null$formOptions);
  31.     }
  32. }