Форма множественного запроса Symfony 4 - PullRequest
1 голос
/ 05 ноября 2019

Я хочу построить форму для выполнения запроса нескольких. Вот пример того, что я хочу сделать enter image description here

В этом случае запрос SQL должен выглядеть примерно так:

SELECT * FROM DB WHERE city = city1 or city = city2 or pet = pet2 or pet = pet3 or food = food1

Я пытался это сделатьс symfony безуспешно, потому что «symfony кроме строки, а не массива»

   class CoreSearchType extends AbstractType
    {
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('city' , ChoiceType::class, [
            'choices' =>array('France' => $this->getChoicesCities()),
                'label' => false,'required' => true,'placeholder'=>'Choose','multiple' => true])

Но я не знаю, как это сделать. Если кто-то может помочь мне найти способ сделать это ... Пожалуйста, обратите внимание, что я использую symfony 4

edit: я хочу иметь возможность выбрать два города (или больше), например: city1 и city2 (все выборки city1 + выбор city2, а не переменная с указанием типа city1 и city2)

для примера, если: city1 = Париж, Токио, Рио-Сити2 = Амьен, Мадрид, Лондон

ответ на запрос будет: Париж, Токио, Рио, Амьен, Мадрид, Лондон

Спасибо!

1 Ответ

1 голос
/ 07 ноября 2019

Из того, что я вижу в вашем вопросе, вы хотите форму, которая состоит из трех типов выбора. Вот пример того, как это может выглядеть.

class CoreSearchType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options) 
    {
        $builder
            ->add('city', ChoiceType::class, [
                'choices' => [
                    'city 1' => 'city1',
                    'city 2' => 'city2',
                    'city 3' => 'city3',
                ],
                'label' => false,
                'placeholder' => 'Choose',
                'multiple' => true,
            ])
            ->add('pet', ChoiceType::class, [
                'choices' => [
                    'pet 1' => 'pet1',
                    'pet 2' => 'pet2',
                    'pet 3' => 'pet3',
                ],
                'label' => false,
                'placeholder' => 'Choose',
                'multiple' => true,
            ])
            ->add('city', ChoiceType::class, [
                'choices' => [
                    'food 1' => 'food1',
                    'food 2' => 'food2',
                    'food 3' => 'food3',
                ],
                'label' => false,
                'placeholder' => 'Choose',
                'multiple' => true,
            ])
        ;
    }
}

Пожалуйста, проверьте часть относительно опции choices в документации Symfony здесь: https://symfony.com/doc/current/reference/forms/types/choice.html#choices

Опция choices является массивом, гдеключ массива - это метка элемента, а значение массива - это значение элемента

Я думаю, что ваша ошибка может исходить из этой строки:

'choices' => array('France' => $this->getChoicesCities())

Это может сработать, если вы измените егодо

'choices' => array($this->getChoicesCities())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...