src/CustomBundle/Form/RestaurantSearchType.php line 14

Open in your IDE?
  1. <?php
  2. namespace CustomBundle\Form;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type as InputType;
  5. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\Form\FormEvent;
  8. use Symfony\Component\Form\FormEvents;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. use AppBundle\Validator\Constraints as CustomAssert;
  12. class RestaurantSearchType extends AbstractType
  13. {
  14.     public function getBlockPrefix()
  15.     {
  16.         return '';
  17.     }
  18.     public function buildForm(FormBuilderInterface $builder, array $options)
  19.     {
  20.         $genres $options['genres'];
  21.         $time_by_cars $options['time_by_cars'];
  22.         $scenes $options['scenes'];
  23.         $features $options['features'];
  24.         if(!empty($genres)) {
  25.             $builder->add('genre'InputType\ChoiceType::class, [
  26.                 'required' => false,
  27.                 'label' => 'ジャンル',
  28.                 'constraints' => [],
  29.                 'expanded' => true,
  30.                 'multiple' => true,
  31.                 'choices' => array_flip($genres)
  32.             ]);
  33.         }
  34.         if(!empty($time_by_cars)) {
  35.             $builder->add('time_by_car'InputType\ChoiceType::class, [
  36.                 'required' => false,
  37.                 'label' => '車での距離',
  38.                 'constraints' => [],
  39.                 'expanded' => true,
  40.                 'multiple' => false,
  41.                 'placeholder' => '指定なし',
  42.                 'choices' => array_flip($time_by_cars)
  43.             ]);
  44.         }
  45.         if(!empty($scenes)) {
  46.             $builder->add('scene'InputType\ChoiceType::class, [
  47.                 'required' => false,
  48.                 'label' => '利用シーン',
  49.                 'constraints' => [],
  50.                 'expanded' => true,
  51.                 'multiple' => false,
  52.                 'placeholder' => '指定なし',
  53.                 'choices' => array_flip($scenes)
  54.             ]);
  55.         }
  56.         if(!empty($features)) {
  57.             $builder->add('feature'InputType\ChoiceType::class, [
  58.                 'required' => false,
  59.                 'label' => '特徴',
  60.                 'constraints' => [],
  61.                 'expanded' => true,
  62.                 'multiple' => true,
  63.                 'choices' => array_flip($features)
  64.             ]);
  65.         }
  66.     }
  67.     public function configureOptions(OptionsResolver $resolver)
  68.     {
  69.         parent::configureOptions($resolver);
  70.         $resolver->setDefaults([
  71.             'genres' => null,
  72.             'time_by_cars' => null,
  73.             'scenes' => null,
  74.             'features' => null,
  75.             'allow_extra_fields' => true// ?page=のエラーを出さない用
  76.         ]);
  77.     }
  78. }