src/Form/Articles/ArticleDiversType.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Form\Articles;
  3. use App\DataTransformer\Fournisseurs\IdToFournisseurTransformer;
  4. use App\Entity\Articles\ConditionAchat;
  5. use App\Entity\Fournisseurs\Fournisseur;
  6. use App\Form\Fournisseurs\FournisseurType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  9. use Symfony\Component\Form\AbstractType;
  10. use Symfony\Component\Form\FormBuilderInterface;
  11. use Symfony\Component\OptionsResolver\OptionsResolver;
  12. use Symfony\Component\OptionsResolver\OptionsResolverInterface;
  13. use Doctrine\Common\Persistence\ObjectManager;
  14. use Symfony\Component\Form\FormEvents;
  15. use Symfony\Component\Form\FormEvent;
  16. use Symfony\Component\Form\FormInterface;
  17. class ArticleDiversType extends AbstractType
  18. {
  19.     public function buildForm(FormBuilderInterface $builder, array $options)
  20.     {
  21.         $builder
  22.             ->add('referenceFournisseur')
  23.             ->add('libelle')
  24.             //->add('conditionnement')
  25.             ->add('defaut')
  26.             //->add('quantite')
  27.             ->add('prixAchatBrut')
  28.             ->add('tauxRemise')
  29.             ->add('tauxRemiseSupplementaire')
  30.             ->add('prixAchatNet')
  31.             //->add('fournisseur')
  32.             ->add('fournisseur'EntityType::class, [
  33.                 'multiple' => false// Wether or not multiple values are allowed (default to false)
  34.                 'class' => Fournisseur::class,
  35.                 'attr'  => [
  36.                     'class' => 'select2-hidden-accessible',
  37.                 ],
  38.             ])
  39.             //->add('fournisseur', new FournisseurType($this->entityManager))
  40.             ->add('article'ArticleType::class);
  41. //        $builder->get('fournisseur')->addModelTransformer(new IdToFournisseurTransformer($this->entityManager));
  42.         $formModifier = function (FormInterface $formFournisseur $fournisseur null) {
  43.             if (is_object($fournisseur) && ($fournisseur->getDivers() == 1)) {//|| $fournisseur->getTva() == ''
  44.                 $form->add('fournisseurPlus'FournisseurType::class, [
  45.                     'data_class' => Fournisseur::class,
  46.                 ],         ['validation_groups' => ['articleDivers']]);
  47.             }
  48.             /*else {
  49.                 $form->add('fournisseur', EntityType::class, array( 
  50.                     'data_class' => 'DTC\FournisseursBundle\Entity\Fournisseur',
  51.                 'configs' => array(
  52.                         
  53.                     'multiple' => false, // Wether or not multiple values are allowed (default to false)
  54.                 )
  55.             ));
  56.             }
  57.              * 
  58.              */
  59.         };
  60.         $builder->addEventListener(
  61.             FormEvents::PRE_SET_DATA,
  62.             function (FormEvent $event) use ($formModifier) {
  63.                 $data $event->getData();
  64.                 $formModifier($event->getForm(), $data->getFournisseur());
  65.             }
  66.         );
  67.         $builder->get('fournisseur')->addEventListener(
  68.             FormEvents::POST_SUBMIT,
  69.             function (FormEvent $event) use ($formModifier) {
  70.                 // It's important here to fetch $event->getForm()->getData(), as
  71.                 // $event->getData() will get you the client data (that is, the ID)
  72.                 $fournisseur $event->getForm()->getData();
  73.                 // since we've added the listener to the child, we'll have to pass on
  74.                 // the parent to the callback functions!
  75.                 $formModifier($event->getForm()->getParent(), $fournisseur);
  76.             }
  77.         );
  78.     }
  79.     public function configureOptions(OptionsResolver $resolver)
  80.     {
  81.         $resolver->setDefaults([
  82.                                    'data_class' => ConditionAchat::class,
  83.                                    'validation_groups' => ['articleDivers'],
  84.                                ]);
  85.     }
  86.     public function getName()
  87.     {
  88.         return 'dtc_articlesbundle_conditionachat';
  89.     }
  90.     public function getBlockPrefix():string
  91.     {
  92.         return 'dtc_articlesbundle_conditionachat';
  93.     }
  94. }