Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
srv
/
data
/
web
/
vhosts
/
www.humitest.fr
/
htdocs
/
src
/
Form
/
/srv/data/web/vhosts/www.humitest.fr/htdocs/src/Form/InformationType.php
<?php namespace App\Form; use App\Entity\Information; use App\Entity\Promotional; use Symfony\Component\Form\FormError; use Symfony\Component\Form\AbstractType; use App\Repository\PromotionalRepository; use Symfony\Component\Security\Core\Security; use App\Repository\CategoryDiscountRepository; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\IsTrue; use Symfony\Component\Validator\Constraints\Callback; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\CountryType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Validator\Context\ExecutionContextInterface; class InformationType extends AbstractType { private $promotionalRepository; private $security; private $categoryDiscountRepository; public function __construct(PromotionalRepository $promotionalRepository, Security $security, CategoryDiscountRepository $categoryDiscountRepository){ $this->promotionalRepository = $promotionalRepository; $this->security = $security; $this->categoryDiscountRepository = $categoryDiscountRepository; } public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('companyName',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'Nom de l\'entreprise (facultatif)' ) ]) ->add('firstname',TextType::class,[ 'label' => false, 'attr' => array( 'placeholder' => 'Nom' ) ]) ->add('lastname',TextType::class,[ 'label' => false, 'attr' => array( 'placeholder' => 'Prénom' ) ]) ->add('email',TextType::class,[ 'label' => false, 'attr' => array( 'placeholder' => 'Email' ) ]) ->add('phone',TextType::class,[ 'label' => false, 'attr' => array( 'placeholder' => 'Téléphone' ) ]) ->add('country', CountryType::class, [ 'preferred_choices' => ['FR'], 'attr' => [ 'class' => 'form-control', ], 'label' => false ]) ->add('address',TextType::class,[ 'label' => 'Adresse de livraison :', 'attr' => array( 'placeholder' => 'Adresse' ) ]) ->add('zipcode',TextType::class,[ 'label' => false, 'required'=> false, 'attr' => array( 'placeholder' => 'CP' ) ]) ->add('city',TextType::class,[ 'label' => false, 'required'=> false, 'attr' => array( 'placeholder' => 'Ville' ) ]) ->add('code', TextType::class,[ 'required' => false, 'label' => false, 'attr' => array( 'placeholder' => 'Code Promo ou Code de remise' ) ]) ->add('termsAccepted', CheckboxType::class, [ 'mapped' => false, 'constraints' => new IsTrue(), 'label' => 'En cochant cette case, vous acceptez :' ]) ->add('noteCommande', TextareaType::class, [ 'label' => false, 'required' => false, 'label' => 'Notes de commande (facultatif)', 'attr' => array( 'placeholder' => 'Commentaire concernant votre commande, ex: consignes de livraison.', ) ]) ->add('email2',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'Email' ) ]) ->add('phone2',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'Téléphone' ) ]) ->add('firstname2',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'Nom' ) ]) ->add('companyName2',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'Nom de l\'entreprise (facultatif)' ) ]) ->add('lastname2',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'Prénom' ) ]) ->add('country2', CountryType::class, [ 'preferred_choices' => ['FR'], 'required' => false, 'attr' => [ 'class' => 'form-control', ], 'label' => false, ]) ->add('address2',TextType::class,[ 'label' => 'Adresse de livraison :', 'required' => false, 'attr' => array( 'placeholder' => 'Adresse' ) ]) ->add('zipcode2',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'CP' ) ]) ->add('city2',TextType::class,[ 'label' => false, 'required' => false, 'attr' => array( 'placeholder' => 'Ville' ) ]) ; } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Information::class, 'translation_domain' => 'forms', 'constraints' => [ new Callback([$this, 'validate']), ], ]); } public function validate(Information $information, ExecutionContextInterface $context) { $form = $context->getRoot(); $msg3 = 'Erreur! Ce code promo n\'est plus valide!'; $msg4 = 'Erreur! Ce code n\'existe pas'; $code = $information->getCode(); if(!empty($code)){ $promotional = $this->promotionalRepository->findOneByCode($code); $discount = $this->categoryDiscountRepository->findOneBy(['codeUnlockDiscount' => $information->getCode()]); if($promotional != null){ if($promotional->getIsActive() == false){ $form->get('code')->addError( new FormError($msg3) ); } } if($promotional == null and $discount == null){ $form->get('code')->addError( new FormError($msg4) ); } } } }