首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateType字段--只能在今天之后选择

DateType字段--只能在今天之后选择
EN

Stack Overflow用户
提问于 2016-06-21 22:19:12
回答 1查看 78关注 0票数 1

我有一份表格可供您选择(除其他外):

  • 日期外卖
  • 小时外卖

看起来是这样的:

我的表单中包含以下部分的代码如下:

代码语言:javascript
复制
$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点这样的时间

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 23:22:46

有许多方法可以做到这一点:

您可以得到当前日期,然后像上面一样在控制器中查看日期是否在未来(假设是7月1日)。然后创建一个Flashbag消息并重定向到Flashbag模板。

对于小时,您还可以执行相同的操作,检查时间(加分钟)是否在指定的时间范围内,如果不创建Flash错误消息,则将其重定向到twig。

另一个选项(可能会有更多代码)是基于一个实体创建一个表单类,该实体是您的Date Time对象。理想情况下,只有一个包含日期和时间的实体。我不能就此向你提出建议,但我没有尝试过,但我知道这是可能的。

表单类将在此链接中解释。

我希望这能回答这个问题?

编辑#2.在第二次检查了您的问题之后,我看到您可以使用TimeType::class字段来完成这个任务:

代码语言:javascript
复制
->add('hourTakeout', TimeType::class, array(
        'label' => "Kies het gewenste uur van afhalen *",
        'required' => true,
        'widget' => 'choice',
        'hours' => range(15,23),
        ));

这限制了你可选择的时间从下午3点到11点(我使用范围函数输入24小时格式)。这是个只适用于几个小时的解决办法。希望这是合理的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37955521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档