src/Form/SearchType.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Label;
  4. use App\Entity\Style;
  5. use App\Entity\Artist;
  6. use App\Services\Search;
  7. use Doctrine\ORM\EntityRepository;
  8. use Symfony\Component\Form\AbstractType;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  11. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  15. class SearchType extends AbstractType
  16. {
  17.     public function buildForm(FormBuilderInterface $builder, array $options): void
  18.     {
  19.         $builder
  20.         ->add('styles'EntityType::class, [
  21.             'required' => false,
  22.             'label' => 'forms.labels.styles',
  23.             'class' => Style::class,
  24.             'query_builder' => function (EntityRepository $er) {
  25.                 return $er->createQueryBuilder('s')
  26.                     ->orderBy('s.name''ASC');
  27.             },
  28.             'multiple' => true,
  29.             'expanded' => true,
  30.             'attr' => [
  31.                 'class' => 'text-capitalize d-flex flex-wrap',
  32.             ]
  33.         ])
  34.         ->add('label'EntityType::class, [
  35.             'required' => false,
  36.             'label' => 'forms.labels.label',
  37.             'class' => Label::class,
  38.             'query_builder' => function (EntityRepository $er) {
  39.                 return $er->createQueryBuilder('l')
  40.                     ->orderBy('l.name''ASC');
  41.             },
  42.             'attr' => [
  43.                 'class' => 'text-capitalize w-100',
  44.             ],
  45.             'placeholder' => 'forms.placeholders.select_option',
  46.             'empty_data' => '',
  47.         ])
  48.         ->add('artist'EntityType::class, [
  49.             'required' => false,
  50.             'label' => 'forms.labels.artist',
  51.             'class' => Artist::class,
  52.             'query_builder' => function (EntityRepository $er) {
  53.                 return $er->createQueryBuilder('a')
  54.                     ->orderBy('a.name''ASC');
  55.             },
  56.             'attr' => [
  57.                 'class' => 'text-capitalize w-100',
  58.             ],
  59.             'placeholder' => 'forms.placeholders.select_option',
  60.             'empty_data' => '',
  61.         ])
  62.         ->add('year'IntegerType::class, [
  63.             'required' => false,
  64.             'label' => 'forms.labels.year',
  65.             'attr' => [
  66.                 'min' => 1970,
  67.                 'max' => (int)date('Y'),
  68.                 'class' => 'w-100',
  69.             ],
  70.             'empty_data' => '',
  71.         ])
  72.         ->add('q'TextType::class, [
  73.             'required' => false,
  74.             'label' => false,
  75.             'attr' => [
  76.                 'class' => 'w-100',
  77.                 'placeholder' => 'forms.placeholders.search_placeholder',
  78.             ]
  79.         ])
  80.         ->add('inStock'CheckboxType::class, [
  81.             'required' => false,
  82.             'label' => 'forms.labels.in_stock',
  83.         ])
  84.         ->add('promo'CheckboxType::class, [
  85.             'required' => false,
  86.             'label' => 'forms.labels.promo',
  87.         ])
  88.         ->add('homeprod'CheckboxType::class, [
  89.             'required' => false,
  90.             'label' => 'forms.labels.home_prod',
  91.         ])
  92.         ->add('repress'CheckboxType::class, [
  93.             'required' => false,
  94.             'label' => 'forms.labels.repress',
  95.         ])
  96.         ->add('neuf'CheckboxType::class, [
  97.             'required' => false,
  98.             'label' => 'forms.labels.new',
  99.         ])
  100.         ->add('occasion'CheckboxType::class, [
  101.             'required' => false,
  102.             'label' => 'forms.labels.used',
  103.         ])
  104.         ;
  105.     }
  106.     public function configureOptions(OptionsResolver $resolver): void
  107.     {
  108.         $resolver->setDefaults([
  109.             'data_class' => Search::class,
  110.             'method' => 'GET',
  111.             'csrf_protection' => false
  112.         ]);
  113.     }
  114.     public function getBlockPrefix()
  115.     {
  116.         return '';
  117.     }
  118. }