← Back
Editing: AgencyPrestataireType.php
<?php namespace App\Form; use App\Entity\Adresse; use App\Entity\AgencyPrestataire; use App\Service\SolutionService; use Doctrine\ORM\EntityRepository; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\TelType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; class AgencyPrestataireType extends AbstractType { private ?UserInterface $user; private SolutionService $solutionService; public function __construct(Security $security, SolutionService $solutionService) { $this->user = $security->getUser(); $this->solutionService = $solutionService; } /** * @return void */ public function buildForm(FormBuilderInterface $builder, array $options) { $new = isset($options['data']) && $options['data']->getId(); if (!$new) { $builder->add( 'prestataire', PrestataireType::class, [ 'label' => false, ] ); } $builder ->add( 'nomContact', TextType::class, [ 'required' => false, ] ) ->add( 'prenomContact', TextType::class, [ 'required' => false, ] ) ->add( 'mailContact', EmailType::class, [ 'required' => true, ] ) ->add( 'telephone', TelType::class, [ 'required' => false, ] ); if (!$new) { $builder->add( 'numeroContrat', TextType::class, [ 'required' => true, ] )->add( 'adresses', EntityType::class, [ 'label' => 'Adresses associées', 'class' => Adresse::class, 'mapped' => false, 'multiple' => true, 'required' => true, 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('ad') ->leftJoin('ad.userAddresses', 'ua') ->leftJoin('ua.user', 'a') ->leftJoin('a.manager', 'u') ->leftJoin('u.solutions', 's') ->where('a.manager = :manager') ->setParameter('manager', $this->user); }, ] ); } } /** * @return void */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( [ 'data_class' => AgencyPrestataire::class, ] ); } }
Save File
Cancel