← Back
Editing: AgencyType.php
<?php namespace App\Form; use App\Entity\Agency; use App\Entity\Item; use App\Repository\ItemRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class AgencyType extends AbstractType { public function __construct(private ItemRepository $itemRepository) { } public function buildForm(FormBuilderInterface $builder, array $options): void { $items = $this->itemRepository->findAll(); $itemChoices = []; foreach ($items as $item) { /* @var Item $item */ $itemChoices[$item->getZone()->getNom()][$item->getNom()] = $item; } $builder ->add('nom') ->add('organization') ->add( 'dateDebutContrat', DateType::class, ['widget' => 'single_text', 'required' => false, 'attr' => ['class' => 'datepicker']] ) ->add( 'dateFinContrat', DateType::class, ['widget' => 'single_text', 'required' => false, 'attr' => ['class' => 'datepicker']] ) ->add('email') ->add( 'telephoneFixe', TextType::class, [ 'required' => false, 'attr' => [ 'class' => 'telephone_form', ], ] ) ->add('nombreLicence') ->add( 'logo', FileType::class, [ 'data_class' => null, 'required' => false, ] ) ->add('nomContact') ->add('prenomContact') ->add('mailContact') ->add( 'telephoneContact', TextType::class, [ 'required' => false, 'attr' => [ 'class' => 'telephone_form', ], ] ) ->add('photoObligatoireContact') ->add('defaultAddressItems', ChoiceType::class, [ 'choices' => $itemChoices, 'multiple' => true, ]) ->add('solutions'); $builder->get('defaultAddressItems')->addModelTransformer( new CallbackTransformer( function (?Collection $addressItems): array { if (null === $addressItems) { return []; } return $addressItems->toArray(); }, function (array $addressItems): Collection { return new ArrayCollection($addressItems); } ) ); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults( [ 'data_class' => Agency::class, ] ); } }
Save File
Cancel