<?php
// src/Form/SearchType.php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use App\Entity\Villes;
use App\Entity\Themes;
use App\Repository\VillesRepository;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\SearchType as SymfonySearchType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class RechercheFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
/*->add('mot', SymfonySearchType::class, [
'label' => false,
'required' => false,
'attr' => [
'class' => 'search-form__input form-control',
'placeholder' => 'Séminaire recherché...',
],
])*/
->add('mot', EntityType::class, [
'class' => Themes::class,
'choice_label' => 'nom',
'choice_value' => 'nom',
'required' => false,
'mapped' => false,
'placeholder' => 'Séminaire recherché...',
'label' => false,
'attr' => [
'class' => 'search-form__input form-control select2',
'autocomplete' => 'off',
'style' => 'width: 100%;',
'id' => 'recherche_mot', // important !
],
])
->add('ville', EntityType::class, [
'required' => false,
'mapped' => false,
'choice_label' => 'nom',
'choice_value' => 'id',
'placeholder' => 'Sélectionner la ville', // 🔹 ceci ajoute l’option par défaut
'label' => false,
'attr' => [
'class' => 'form-control ville-uppercase',
'style' => 'border-radius: 0px;',
'placeholder' => 'Selectionner la ville',
],
'class' => Villes::class,
// Ici on filtre SHANGAI
'query_builder' => function (VillesRepository $vr) {
return $vr->createQueryBuilder('v')
->orderBy('v.nom', 'ASC'); // pas de where ici
},
'choice_attr' => function(Villes $ville) {
// masquer SHANGAI dans le menu d�roulant
return strtoupper($ville->getNom()) === 'SHANGHAI' ? ['style' => 'display:none'] : [];
},
])
->add('submit', SubmitType::class, [
'attr' => [
'class' => 'btn-recherche',
'style' => 'width: 100%; border-radius: 5px;'
],
'label' => 'Rechercher',
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'method' => 'GET',
'csrf_protection' => false,
]);
}
}