Symfony 4 CollectionType с несколькими раскрывающимися списками со значениями по умолчанию - PullRequest
0 голосов
/ 12 февраля 2019

Я создал форму, но теперь мне нужно добавить 7 выпадающих списков в виде массива, и они будут храниться в сериализованном виде в параметре OpenTimes моей сущности.Я сделал аналогичные с ChoiceType для флажков, и это работает.

Я не могу понять, как я могу сделать 7 различных выпадающих с использованием CollectionType, они просто не отображаются в форме.

$form->add('openTimes',CollectionType::class,[
            'entry_type'=>ChoiceType::class,
            'entry_options'=>[
                'attr'=>[
                    'class'=>'form-control selectpicker'
                ],
                'choices'=>[
                    '9:00'=>'9:00',
                    '10:00'=>'10:00'

                ]
            ]

        ]);

Этот код явно не работает, и это не совсем то, что мне нужно.

Мне нужно 7 раскрывающихся списков в массиве, так что один будет понедельник, вторник, среда и т. Д., И раскрывающийся список будет содержатьвремя дня, например 9 утра, 10 утра и т. д.

Приведенный выше код, даже если он работал, будет дублировать их с теми же вариантами выбора, что хорошо, но они не отображаются в форме, и я 'я не уверен, как я скажу форме назвать их так:

<select name="openTimes[mon]">
<select name="openTimes[tue]">

Итак, мои вопросы:

  1. Как мне получить эту коллекцию выпадающихна самом деле показывать в форме, когда я использую {{form_widget (form.openTimes)}}}

  2. Как сделать так, чтобы каждый элемент выбора называл его так, как я хочу, чтобы в качестве дня неделиключ массива?

1 Ответ

0 голосов
/ 12 февраля 2019

Прежде всего вы должны создать дамп сериализованной логики данных, но если вы действительно хотите сделать все в этом отношении, используйте тип данных JSON, поскольку это поддерживается доктриной.Для преобразования данных так, как вы хотите, вы можете использовать Data Transformers.Что касается визуализации формы, вы должны создать свой собственный тип формы, например «OpenTimeType», где элементами будут «WeekDay» и «Hour», а затем в основной форме вы можете создать коллекцию с именем «OpenTimes» вашего типа формы «OpenTimeType».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...