src/Form/LivraisonsType.php line 102

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Livraisons;
  4. use App\Entity\PaymentMethod;
  5. use App\Entity\TypeLivraison;
  6. use App\Entity\StatutLivraison;
  7. use App\Entity\Livreurs;
  8. use App\Entity\ZoneLivraison;
  9. use App\Entity\User;
  10. use Symfony\Component\Form\AbstractType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Doctrine\ORM\EntityRepository;
  14. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  15. use Symfony\Component\Form\Extension\Core\Type\TextType;
  16. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  17. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  19. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  20. class LivraisonsType extends AbstractType
  21. {
  22.     public function buildForm(FormBuilderInterface $builder, array $options): void
  23.     {
  24.         $builder
  25.             ->add('depart'DateTimeType::class,
  26.             array(
  27.                 'widget' => 'single_text',
  28.                 'format' => 'yyyy-MM-dd  HH:mm',
  29.                 'html5' => false
  30.                  ))
  31.             ->add('arrivee'DateTimeType::class,
  32.             array(
  33.                 'widget' => 'single_text',
  34.                 'format' => 'yyyy-MM-dd  HH:mm',
  35.                 'html5' => false
  36.                  ))
  37.   
  38.                  ->add('pays')
  39.                  ->add('nombredocuments'null, [
  40.                     'label' => 'Nombre documents(500f chacun)',
  41.                 ])                 
  42.             ->add('adresse_depart')
  43.             ->add('adresse_arrivee')
  44.             ->add('zonelivraison'EntityType::class, [
  45.                 'class' => ZoneLivraison::class,
  46.                 'query_builder' => function (EntityRepository $er) {
  47.                     return $er->createQueryBuilder('u');
  48.                 },
  49.                 'choice_label' => 'libellezone',
  50.                  'label' => 'Zone de départ',
  51.                  'placeholder' => 'Selectionner une zone..',
  52.             ])
  53.             ->add('zonearrivee'EntityType::class, [
  54.                 'class' => ZoneLivraison::class,
  55.                 'query_builder' => function (EntityRepository $er) {
  56.                     return $er->createQueryBuilder('u');
  57.                 },
  58.                 'choice_label' => 'libellezone',
  59.                  'label' => 'Zone d\'arrivée',
  60.                  'placeholder' => 'Selectionner une zone..',
  61.             ])
  62.             ->add('statut_livraison'EntityType::class, [
  63.                 'class' => StatutLivraison::class,
  64.                 'query_builder' => function (EntityRepository $er) {
  65.                     return $er->createQueryBuilder('u');
  66.                 },
  67.                 'choice_label' => 'libelle',
  68.             ])
  69.             ->add('poids',ChoiceType::class, [
  70.                 'label' => 'Poids (Kgs)',
  71.                 'choices' => [
  72.                     'Poids < 5 Kgs' => 3,
  73.                     'Poids Compris entre 5 et 10 Kgs' => 7,
  74.                     'Poids Compris entre 10 et 20 Kgs' => 15,
  75.                     'Poids Compris entre 20 et 50 Kgs' => 35,
  76.                     'Poids Compris entre 50 et 100 Kgs' => 75,
  77.                 ],
  78.                 'expanded' => false// Affiche les choix comme des boutons radio
  79.                 'required' => true,
  80.             ])
  81.             ->add('description'TextareaType::class, [
  82.                 'label' => 'Description'// Texte affiché devant le champ
  83.                 'required' => false
  84.                 'empty_data'=> '',
  85.                 'attr' => [
  86.                     'placeholder' => 'Entrez une description ici...',
  87.                     'rows' => 4// Nombre de lignes visibles du textarea
  88.                     
  89.                 ]
  90.             ])
  91.             ->add('type_livraison',EntityType::class, [
  92.                 'class' => TypeLivraison::class,
  93.                 'query_builder' => function (EntityRepository $er) {
  94.                     return $er->createQueryBuilder('u');
  95.                 },
  96.                 'placeholder' => 'choisir un type de livraison..',
  97.             ])
  98.             ->add('id_livreurs'EntityType::class, [
  99.                 'class' => Livreurs::class,
  100.                 'query_builder' => function (EntityRepository $er) {
  101.                     return $er->createQueryBuilder('u');
  102.                 },
  103.                 'choice_label' =>  function ($livreur) {
  104.                     return $livreur->getPrenom() . ' ' $livreur->getNom();
  105.                 },
  106.                 'label' => 'Le livreur',
  107.                 'placeholder' => 'Aucun livreur'// ✅ Affiche une première option vide
  108.                 'required' => false// Facultatif, pour autoriser null
  109.             ])
  110.             
  111.             ->add('userprofile')
  112.             ->add('montant')
  113.             ->add('latitude'TextType::class, [
  114.                 'label' => 'Latitude',
  115.                 'required' => false,
  116.                 'empty_data' => '14.724490, -17.462043',
  117.                 'attr' => ['id' => 'latitude'], // Lié au JavaScript
  118.             ])
  119.             ->add('longitude'TextType::class, [
  120.                 'label' => 'Longitude',
  121.                 'required' => false,
  122.                 'empty_data' => '14.696562, -17.459299',
  123.                 'attr' => ['id' => 'longitude'], // Lié au JavaScript
  124.             ])
  125.             ->add('paymentMethod'EntityType::class, [
  126.                 'class' => PaymentMethod::class,
  127.                 'choice_label' => 'name',
  128.                 'placeholder' => false,
  129.                 'expanded' => true// boutons radio
  130.                 'multiple' => false,
  131.                 'required' => false,
  132.                 'query_builder' => function (EntityRepository $er) {
  133.                     return $er->createQueryBuilder('pm')
  134.                         ->where('pm.name NOT IN (:excluded)')
  135.                         ->setParameter('excluded', ['Paypal''OM']);
  136.                 },
  137.             ]);
  138.             ;
  139.     }
  140.     public function configureOptions(OptionsResolver $resolver): void
  141.     {
  142.         $resolver->setDefaults([
  143.             'attr' => [
  144.                 'id' => 'livraisonform',
  145.             ],
  146.             'data_class' => Livraisons::class,
  147.         ]);
  148.     }
  149. }