1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| <?php
namespace App\Form;
use App\Entity\Club;
use App\Entity\League;
use App\Entity\Nationalite;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class PropertySearchType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('nom', TextType::class, [
'required'=> false,
'label'=>false,
'attr'=>[
'placeholder' => "Nom du joueur",
'id'=>"buttonrecherche"
]
])
->add('libelle', EntityType::class, [
'class' => Nationalite::class,
// 'query_builder' => function (EntityRepository $er) {
// return $er->createQueryBuilder('u');
// },
'required'=> false,
'placeholder' => 'natio',
'choice_label' => 'libelle',
'empty_data' => '',
'label' => false
])
->add('nom_league', EntityType::class, [
'class' => League::class,
// 'query_builder' => function (EntityRepository $er) {
// return $er->createQueryBuilder('u');
// },
'required'=> false,
'placeholder' => 'league',
'choice_label' => 'nom_league',
'empty_data' => '',
'label' => false
]);
$builder->get('nom_league')->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event){
$form = $event->getForm();
$form->getParent()->add('nom_club', EntityType::class, [
'class' => Club::class,
'required'=> false,
'placeholder' => 'club',
'choice_label' => 'nom_club',
'empty_data' => '',
'label' => false,
// 'auto_initialize' => false,
'choices' => $form->getData()->getClubs()
]);
}
)
;
$builder->addEventListener(
FormEvents::POST_SET_DATA,
function (FormEvent $event) {
$data = $event->getData();
$club = $data->getNomClub();
if ($club){
$league = $club->getLeague();
$this->addClubField($event->getForm(), $club);
$event->getForm()->get('nom_league')->setData($league);
$event->getForm()->get('nom_club')->setData($club);
}
}
);
}
private function addClubField(FormInterface $form, ?League $league){
$builder = $form->getConfig()->getFormFactory()->createNamedBuilder(
'nom_club', EntityType::class, null,[
'class' => Club::class,
'required'=> false,
'placeholder' => 'club',
'choice_label' => 'nom_club',
'empty_data' => '',
'label' => false,
'auto_initialize' => false,
'choices' => $form->getData()->getNomClub()
]
);
$builder->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event) {
dump($event->getForm());
}
);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
// Configure your form options here
]);
}
} |
Partager