我已经创建了一个表单,但是现在我需要添加7个下拉列表作为数组,它们将被序列化存储在我实体的OpenTimes参数中。对于复选框,我对ChoiceType做了类似的工作。
我不知道如何使用CollectionType进行7种下拉菜单,只是它们没有显示在表单上。
$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]">
所以我的问题是:
当我使用{{form_widget(form.openTimes)}}
如何将每个选择元素命名为其所需的名称,如星期几作为数组键?
答案 0 :(得分:1)
首先,您应该转储序列化的数据逻辑,但是如果您真的想做所有事情,请使用JSON数据类型,因为该学说支持它。要以所需方式转换数据,可以使用数据转换器。对于表单呈现,您应该创建自己的自定义表单类型,例如“ OpenTimeType”,其中元素将为“ WeekDay”和“ Hour”,然后在主表单中可以创建表单类型为“ OpenTimeType”的名为“ OpenTimes”的集合。