%PDF- %PDF-
Direktori : /home/emtnaeewxm/www/src/EEM/MaintenanceBundle/Form/ |
Current File : /home/emtnaeewxm/www/src/EEM/MaintenanceBundle/Form/MaintenanceType.php |
<?php namespace EEM\MaintenanceBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use EEM\MaintenanceBundle\Entity\Maintenance; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Doctrine\ORM\EntityRepository; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormInterface; class MaintenanceType extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $maintenance = new Maintenance(); $builder ->add('nomClient', TextType::class, [ "label" => "Nom", "required" => false, 'attr' => [ 'autocomplete' => 'off', 'placeholder' => 'Nom'] ]) ->add('telClient', TextType::class, [ "label" => "Téléphone", "required" => false, 'attr' => [ 'autocomplete' => 'off', 'placeholder' => 'Téléphone'] ]) ->add('cinClient', TextType::class, [ "label" => "Cin", "required" => false, 'attr' => [ 'autocomplete' => 'off', 'placeholder' => 'Cin'] ]) ->add('numSerie', TextType::class, [ "label" => "N° Série", "required" => false, 'attr' => [ 'autocomplete' => 'off', 'placeholder' => 'N° Série'] ]) ->add('prixVente', TextType::class, [ "label" => "Prix vente", "required" => false, 'attr' => [ 'autocomplete' => 'off', 'placeholder' => 'Prix vente'] ]) ->add('avance', TextType::class, [ "label" => "Avance", "required" => false, 'attr' => [ 'autocomplete' => 'off', 'placeholder' => 'Avance'] ]) ->add('avance', TextType::class, [ "label" => "Avance", "required" => false, 'attr' => [ 'autocomplete' => 'off', 'placeholder' => 'Avance'] ]) ->add('panne', ChoiceType::class, array( 'label' => 'Panne', 'placeholder' => 'Tous', 'choices' => array_flip($maintenance->liste_panne()), 'expanded' => false, 'multiple' => false, 'required' => false )) ->add('marque', EntityType::class, [ 'class' => 'EEMArticleBundle:Marque', 'choice_label' => 'name', 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('p') ->leftJoin('p.familles', 'familles') ->addSelect('familles') ->andWhere('familles.id = :famille_id') ->setParameter('famille_id', 1) ->orderBy('p.name', 'ASC'); }, 'placeholder' => 'Tous', 'label' => 'Marque', 'required' => false, ]) ; $addFacilityForm = function (FormInterface $form, $marque_id) { $form->add('model', EntityType::class, array( 'class' => 'EEMArticleBundle:Modele', 'placeholder' => 'Tous', 'label' => 'Modele', 'choice_label' => 'name', 'required' => false, 'query_builder' => function (EntityRepository $er) use ($marque_id) { // this does the trick to get the right options return $er->createQueryBuilder('m') ->where('m.marque = :marque_id') ->setParameter('marque_id', $marque_id) ->orderBy('m.name', 'ASC'); } )); }; $builder->addEventListener( FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($addFacilityForm) { $marque = $event->getData()->getMarque(); $marque_id = $marque ? $marque->getId() : null; $addFacilityForm($event->getForm(), $marque_id); } ); $builder->addEventListener( FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($addFacilityForm) { $data = $event->getData(); $marque_id = array_key_exists('marque', $data) ? $data['marque'] : null; $addFacilityForm($event->getForm(), $marque_id); } ); } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'EEM\MaintenanceBundle\Entity\Maintenance' )); } /** * {@inheritdoc} */ public function getBlockPrefix() { return 'eem_maintenancebundle_maintenance'; } }