src/Form/ContactType.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Contact;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  6. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  7. use Symfony\Component\Form\Extension\Core\Type\TextType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. use Symfony\Component\Security\Core\Security// Vérifiez cet import
  11. use Symfony\Component\OptionsResolver\Options// Nécessaire pour la closure de validation_groups
  12. class ContactType extends AbstractType
  13. {
  14.   private $security;
  15.   public function __construct(Security $security// Injection de Security
  16.   {
  17.     $this->security $security;
  18.   }
  19.   public function buildForm(FormBuilderInterface $builder, array $options)
  20.   {
  21.     // Débogage : Vérifiez la valeur ici
  22.     // dump($this->security->getUser()); // Devrait afficher votre objet User si connecté
  23.     // dump($this->security->isGranted('IS_AUTHENTICATED_REMEMBERED')); // Devrait être true si connecté
  24.     // die; // Arrêtez l'exécution pour voir le dump
  25.     $isUserLoggedIn $this->security->isGranted('IS_AUTHENTICATED_REMEMBERED');
  26.     if (!$isUserLoggedIn) { // Si l'utilisateur N'EST PAS connecté
  27.       $builder
  28.         ->add('firstname'TextType::class, [
  29.           'label' => false,
  30.           'attr' => ['placeholder' => 'Entrez prénom''class' => 'form-control mb-3'],
  31.           'required' => true,
  32.         ])
  33.         ->add('lastname'TextType::class, [
  34.           'label' => false,
  35.           'attr' => ['placeholder' => 'Entrez nom''class' => 'form-control mb-3'],
  36.           'required' => true,
  37.         ])
  38.         ->add('email'EmailType::class, [
  39.           'label' => false,
  40.           'attr' => ['placeholder' => 'Entrez votre email''class' => 'form-control mb-3'],
  41.           'required' => true,
  42.         ]);
  43.     }
  44.     $builder->add('message'TextareaType::class, [
  45.       'label' => false,
  46.       'attr' => [
  47.         'placeholder' => 'Décrivez votre demande',
  48.         'rows' => $isUserLoggedIn 5,
  49.         'class' => 'form-control mb-3'
  50.       ],
  51.       'required' => true,
  52.     ]);
  53.   }
  54.   public function configureOptions(OptionsResolver $resolver)
  55.   {
  56.     $resolver->setDefaults([
  57.       'data_class' => Contact::class,
  58.       'validation_groups' => function (Options $options) { // Utilisation de la closure avec $this->security
  59.         if ($this->security->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  60.           return ['Default'];
  61.         }
  62.         return ['guest'];
  63.       },
  64.     ]);
  65.   }
  66. }