我有一个表格可以下订单,您可以选择(其中包括):
看起来像这样:
我的表单中包含以下内容的部分代码如下:
$form = $this->createFormBuilder($order)
->add('dateTakeout', DateType::class, array('label' => "Kies uw datum voor afhaling *", 'required' => true))
->add('hourTakeout', TimeType::class, array('label' => "Kies het gewenste uur van afhalen *", 'required' => true));
但是现在我希望你只能选择今天的第二天 + 仅在下午3点到午夜。
但我不知道如何在表格中预见到这一点。有人可以帮助我吗?
更新
我想限制下拉列表中的选项数量。因此,他们无法选择2016年6月21日或下午1点这样的一天。
答案 0 :(得分:1)
有很多方法可以做到这一点:
您可以获取当前日期,然后在您的控制器中如上所示,查看日期是否在未来(假设是7月1日)。然后创建一个Flashbag消息并重定向到Flash twig模板。
对于小时,你也可以做同样的事情,你检查小时(加上分钟)是否在你指定的时间范围内,如果没有创建Flash错误消息并重定向到树枝。
备用选项(更难 - 可能需要更多代码)是基于作为日期时间对象的实体创建表单类。理想情况下,只有一个实体包含date&时间。我不能就此提出建议,但我没有尝试过这个;但我知道这应该是可能的。
Forms Classes are explained in this link
我希望这能回答这个问题吗?
编辑#2。 在第二次回答你的问题之后,我发现你可以使用TimeType :: class Field:
来做到这一点->add('hourTakeout', TimeType::class, array(
'label' => "Kies het gewenste uur van afhalen *",
'required' => true,
'widget' => 'choice',
'hours' => range(15,23),
));
这限制了您从下午3点到晚上11点的可选时间(我使用范围功能进行了24小时格式化。这仅适用于小时数。 希望这是有道理的。