src/Form/DroitType.php line 193

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Droit;
  4. use App\Entity\Direction;
  5. use App\Entity\Configuration;
  6. use App\Repository\DirectionRepository;
  7. use App\Validator\Constraints\IsWebsite;
  8. use Symfony\Component\Form\AbstractType;
  9. use App\Repository\ConfigurationRepository;
  10. use App\Validator\Constraints\IsEmailOrigin;
  11. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\Validator\Constraints\Url;
  14. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  15. use Symfony\Component\Validator\Constraints\Email;
  16. use Symfony\Component\Validator\Constraints\Length;
  17. use Symfony\Component\Validator\Constraints\NotBlank;
  18. use Symfony\Component\OptionsResolver\OptionsResolver;
  19. use Symfony\Component\Form\Extension\Core\Type\UrlType;
  20. use Symfony\Component\Form\Extension\Core\Type\TextType;
  21. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  22. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  23. class DroitType extends AbstractType
  24. {
  25.     private ConfigurationRepository $configurationRepository;
  26.     public function __construct(ConfigurationRepository $configurationRepository)
  27.     {
  28.         $this->configurationRepository $configurationRepository;
  29.     }
  30.     /**
  31.      * Récupère l'objet Configuration en bdd
  32.      *
  33.      * @return Configuration
  34.      */
  35.     public function getConfiguration(): Configuration
  36.     {
  37.         return $this->configurationRepository->findOneBy(['uuid' => Configuration::UNIQUE_UUID]);
  38.     }
  39.     public function buildForm(FormBuilderInterface $builder, array $options): void
  40.     {
  41.         $builder
  42.             ->add('titre'null, [
  43.                 'label' => 'Titre<span class=\'text-danger\'>*</span>',
  44.                 'label_html'=> true,
  45.                 'required' => false,
  46.                 'constraints' => [
  47.                     new NotBlank([
  48.                         'message' => 'Veuillez saisir un titre',
  49.                     ]),
  50.                 ],
  51.                 'attr' => [
  52.                     'placeholder' => 'Saisir un titre'
  53.                 ]
  54.             ])
  55.             // ->add('description', CKEditorType::class, [
  56.             //     'required' => false,
  57.             //     'label' => 'Description',
  58.             //     'label_html'=> true,
  59.             // ])
  60.             ->add('description'null , [
  61.                 'required' => false,
  62.                 'label' => 'Description<span class=\'text-danger\'>*</span>',
  63.                 'label_html'=> true,
  64.                 'attr' => [
  65.                     'rows' => 6
  66.                 ],
  67.                 'help' => 'Veuillez saisir une description en moins de ' $this->getConfiguration()->getSizeDroit() . ' caractères',
  68.                 'constraints' => [
  69.                     new NotBlank([
  70.                         'message' => 'Veuillez saisir une description',
  71.                     ]),
  72.                     new Length([
  73.                         'min' => 10,
  74.                         'minMessage' => 'Veuillez saisir plus de 10 caractères',
  75.                         'max' => $this->getConfiguration()->getSizeDroit(),
  76.                         'maxMessage' => 'Veuillez saisir moins de ' $this->getConfiguration()->getSizeDroit() . ' caractères',
  77.                     ])
  78.                 ],
  79.             ])
  80.             ->add('lien'TextType::class, [
  81.                 'label' => 'Lien Passerelles<span class=\'text-danger\'>*</span>',
  82.                 'label_html'=> true,
  83.                 'required' => false,
  84.                 // 'constraints' => [
  85.                 //     // new Url([
  86.                 //     //     'message' => 'Veuillez saisir un lien Passerelles valide',
  87.                 //     // ]),
  88.                 //     new NotBlank([
  89.                 //         'message' => 'Veuillez saisir un lien Passerelles',
  90.                 //     ]),
  91.                 //     new IsWebsite()
  92.                 // ],
  93.                 'attr' => [
  94.                     'placeholder' => 'Saisir un lien Passerelles',
  95.                     'rows' => 3
  96.                 ]
  97.             ])
  98.             ->add('nom'null, [
  99.                 'label' => 'Nom<span class=\'text-danger\'>*</span>',
  100.                 'label_html'=> true,
  101.                 'required' => false,
  102.                 
  103.                 'constraints' => [
  104.                     new NotBlank([
  105.                         'message' => 'Veuillez saisir un nom',
  106.                     ]),
  107.                 ],
  108.                 'attr' => [
  109.                     'placeholder' => 'Saisir un nom'
  110.                 ],
  111.                 'help' => 'Non publié sur le site'
  112.             ])
  113.             ->add('prenom'null, [
  114.                 'label' => 'Prénom<span class=\'text-danger\'>*</span>',
  115.                 'label_html'=> true,
  116.                 'required' => false,
  117.                 
  118.                 'constraints' => [
  119.                     new NotBlank([
  120.                         'message' => 'Veuillez saisir un prénom',
  121.                     ]),
  122.                 ],
  123.                 'attr' => [
  124.                     'placeholder' => 'Saisir un prénom'
  125.                 ],
  126.                 'help' => 'Non publié sur le site'
  127.             ])
  128.             ->add('email'EmailType::class, [
  129.                 'label' => 'Email<span class=\'text-danger\'>*</span>',
  130.                 'label_html'=> true,
  131.                 'required' => false,
  132.                 'constraints' => [
  133.                     new Email([
  134.                         'message' => 'Veuillez entrer un email valide',
  135.                     ]),
  136.                     new NotBlank([
  137.                         'message' => 'Veuillez entrer un email',
  138.                     ]),
  139.                     new IsEmailOrigin()
  140.                 ],
  141.                 'attr' => [
  142.                     'placeholder' => 'Saisir une adresse email',
  143.                     'autocomplete' => 'email'
  144.                 ],
  145.                 'help' => 'Non publié sur le site'
  146.             ])
  147.             // ->add('phone', null, [
  148.             //     'label' => 'Numéro de téléphone (Facultatif)',
  149.             //     'required' => false,
  150.                 
  151.             //     // 'constraints' => [
  152.             //     //     new NotBlank([
  153.             //     //         'message' => 'Veuillez entrer un bureau',
  154.             //     //     ]),
  155.             //     // ],
  156.             //     'attr' => [
  157.             //         'placeholder' => 'Saisir un numéro de téléphone'
  158.             //     ],
  159.             //     'help' => 'Non publié sur le site'
  160.             // ])
  161.             ->add('direction'EntityType::class, [
  162.                 'class' => Direction::class,
  163.                 'choice_label' => 'nom',
  164.                 'label' => 'Direction<span class=\'text-danger\'>*</span>',
  165.                 'label_html'=> true,
  166.                 'placeholder' => 'Saisir une direction',
  167.                 'required' => false,
  168.                 'query_builder' => function(DirectionRepository $er) {
  169.                     return $er->createQueryBuilder('p')
  170.                         ->orderBy('p.nom''ASC')
  171.                         ->andWhere('p.statut = :val')
  172.                         ->setParameter('val'1)
  173.                     ;
  174.                 },
  175.                 'constraints' => [
  176.                     new NotBlank([
  177.                         'message' => 'Veuillez saisir une direction',
  178.                     ]),
  179.                 ],
  180.             ])
  181.             
  182.         ;
  183.     }
  184.     public function configureOptions(OptionsResolver $resolver): void
  185.     {
  186.         $resolver->setDefaults([
  187.             'data_class' => Droit::class,
  188.         ]);
  189.     }
  190. }