src/Form/Inventaires/InventaireType.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\Form\Inventaires;
  3. use App\DataTransformer\Articles\IdToMarqueTransformer;
  4. use App\Entity\Articles\Marque;
  5. use App\Entity\Inventaires\Inventaire;
  6. use App\Entity\Inventaires\Type;
  7. use App\Form\Rangements\EmplacementType;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  10. use Symfony\Component\Form\AbstractType;
  11. use Symfony\Component\Form\Extension\Core\Type\DateType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\Form\FormEvents;
  14. use Symfony\Component\Form\FormEvent;
  15. use Symfony\Component\Form\FormInterface;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. class InventaireType extends AbstractType
  18. {
  19.     /**
  20.      * @param FormBuilderInterface $builder
  21.      * @param array $options
  22.      */
  23.     public function buildForm(FormBuilderInterface $builder, array $options)
  24.     {
  25.         $builder
  26.             ->add('inclureArticleDateMouvement')
  27.             ->add('inclureArticleDifferentZero')
  28.             ->add('libelle')
  29.             ->add('type')
  30.             ->add('marque'EntityType::class, [
  31.                 //'data_class' => 'DTC\ArticlesBundle\Entity\Marque',
  32.                 'multiple' => false// Wether or not multiple values are allowed (default to false)
  33.                 'class' => Marque::class,
  34.                 'attr'  => [
  35.                     'class' => 'select2-hidden-accessible',
  36.                 ],
  37.             ])
  38.             ->add('dateMouvement'DateType::class, [
  39.                 'widget'   => 'single_text',
  40.                 'required' => false,
  41.             ]);
  42. //        $builder->get('marque')->addModelTransformer(new IdToMarqueTransformer($this->entityManager));
  43.         $formModifier = function (FormInterface $formType $type null) {
  44.             if (is_object($type) && $type->getId() == && == 0) {
  45.                 /*
  46.                 $form->add('marque', EntityType::class, array(
  47.                     'class' => 'DTC\ArticlesBundle\Entity\Marque',
  48.                     'configs' => array(
  49.                         'multiple' => false, // Wether or not multiple values are allowed (default to false)
  50.                     )
  51.                 ));
  52.                  *
  53.                  */
  54.             } else {
  55.                 $form->add('emplacement'EmplacementType::class);
  56.             }
  57.         };
  58.         $builder->addEventListener(
  59.             FormEvents::PRE_SET_DATA,
  60.             function (FormEvent $event) use ($formModifier) {
  61.                 $data $event->getData();
  62.                 $formModifier($event->getForm(), $data->getType());
  63.             }
  64.         );
  65.         $builder->get('type')->addEventListener(
  66.             FormEvents::POST_SUBMIT,
  67.             function (FormEvent $event) use ($formModifier) {
  68.                 $type $event->getForm()->getData();
  69.                 $formModifier($event->getForm()->getParent(), $type);
  70.             }
  71.         );
  72.     }
  73.     public function configureOptions(OptionsResolver $resolver)
  74.     {
  75.         $resolver->setDefaults([
  76.                                    'data_class' => Inventaire::class,
  77.                                ]);
  78.     }
  79.     public function getName()
  80.     {
  81.         return 'dtc_inventairesbundle_inventaire';
  82.     }
  83.     public function getBlockPrefix():string
  84.     {
  85.         return 'dtc_inventairesbundle_inventaire';
  86.     }
  87. }