营业时间的Symfony表格

时间:2019-11-29 07:30:39

标签: forms symfony symfony4

当前正在尝试创建一个表单以提交营业时间。目前,我获得了一个表格,用户可以选择特定的日期(星期一,星期二,...)以及开放时间(hh:mm)加上关闭时间(hh:mm)。

我的表单类型当前看起来像这样:

        $builder
            ->add('weekday', EntityType::class, ['label' => 'app.weekday', 'class' => Weekday::class, 'choice_label' => 'name', 'choice_translation_domain' => true])
            ->add('open', TimeType::class, ['label' => 'site.hours.open', 'input' => 'datetime_immutable'])
            ->add('close', TimeType::class, ['label' => 'site.hours.close', 'input' => 'datetime_immutable'])
            ->add('submit', SubmitType::class, ['label' => 'app.save']);

我选择使用自己的实体保存工作日,其中1 =星期一,2 =星期二,...(id,姓名)。

但是,这将呈现一个表单,用户必须每天+每次选择一次=>提交表单,然后在其他日期/时间再次重做。

这很不方便。我的理想解决方案是每天使用CollectionType,您可以在其中添加更多时间,并每周提交1份表格。

现在这是我开始努力的地方。我可以制作另一个FormType,在其中将我当前的那个嵌入到集合中-繁荣发展。但是,这仍然需要用户选择每一天-我不想。


那我想要什么?通过以下方式创建表单的FomType:

Monday    OpenSelect (HH:MM)     CloseSelect (HH:MM)  [remove Button]
          OpenSelect (HH:MM)     CloseSelect (HH:MM)  [remove Button]
          OpenSelect (HH:MM)     CloseSelect (HH:MM)  [remove Button]
          ---------      ADD Button     ------------

Tuesday   OpenSelect (HH:MM)     CloseSelect (HH:MM)  [remove Button]
          ---------      ADD Button     ------------

...

我不希望用户选择星期一/星期二等-应该已经设置好了。只需将每天的新时间添加到集合中即可。

请随时询问是否不清楚。谢谢

1 个答案:

答案 0 :(得分:1)

您有两种可能的解决方案:

1)使用已创建的集合创建基础表单对象

2)使用form event(例如:POST_SET_DATA?)以编程方式将丢失的元素添加到集合中(创建新元素时所有元素都会丢失,但是在编辑时可能会丢失某些元素)

相关问题