ZF2表单验证-不重叠的日期和时间

用户名

我目前正在使用ZF2开发会议系统。为此,我使用两个模型,分别称为“会议”和“会议时间”。Meeting与MeetingTime有一对多关系。

会议包含与日期/时间有关的以下字段:

public $slotDuration;
public $meetingTimes;

SlotDuration是每次会议的时间,以分钟为单位。MeetingTimes包含MeetingTime对象。

MeetingTime具有以下与日期/时间有关的字段:

    public $slots;
    public $dateTimeStart;

插槽数是此“会议”块中应容纳的会议数量。DateTimeStart是不言自明的。为了确定该会议的结束时间,我们将时段持续时间乘以该meetingtime对象中的时段数量。由于每个会议块可能在不同的时间结束,因此这是在Meetingtime对象中完成的。然后将结果转换为DateTime对象。

在创建表单中,如果用户认为有必要,我们会为MeetingTimes动态添加新的字段集。我们的业务模型被设计为尽可能灵活,因此用户可能会在会议之间停顿一下,或者在需要时将其延长几天。每个单个字段集都包含一个用于开始日期和时间的HTML5 DateTime元素,一个用于插槽的HTML5 Number元素以及一个用于保留房间的选择框。这些字段集包含在另一个字段集中,并包含在表单中。

现在,我的问题是关于验证,我如何确保这些时间中没有一个重叠(它们必须是连续的)?我在将信息发送到数据库之前在控制器中创建了对象,也许这可能有用。我希望我可以为此使用ZF2验证管道,但是,如果这不可能,那么我欢迎其他解决方案。

编辑:顺便说一句,表单看起来像这样。http://puu.sh/9yJri/12422b8231.png

紫六角

如果没有更多信息,我将无法正确编写此代码,但是您将需要编写一个自定义验证器,该验证器将如下所示:

LocationAvailabilityValidator.php

    <?php
    namespace MeetingModuleThang\Validator;

    use Zend\Validator\AbstractValidator;

    class LocationAvailabilityValidator extends AbstractValidator

    /**
 * (non-PHPdoc)
 * @see Zend\Validator.ValidatorInterface::isValid()
 */
public function isValid($value, $context=array())
{
          //Get the location object from db by name
          $location = $this->getObjectManager()->findByName('\Application\Entity\Location', $context['location']);

          //Get your datetime of end properly this is likely ridiculous
          // But I don't know the metrics and types you are using 
          $endTime = $value + $slotDuration;

          $meetingStartDateTime = DateTime::createFromFormat($yourFormat, $value);
          $meetinEndDateTime = DateTime::createFromFormat($yourFormat, $endTime);

          return $location->isAvailableBetween($meetingStart, $meetingEnd);
    }

然后,您可以仅检查定位方法,是否在db中为该对象存在插槽

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ZF2和Doctrine2:模拟EntityRepository :: findOneByField

来自分类Dev

Zf2中的Bootstrap 3表单

来自分类Dev

设置和访问变量错误页面ZF2

来自分类Dev

ZF2表单中的按钮内容

来自分类Dev

ZF2从路线获取控制器和动作

来自分类Dev

ZF2中InputFilterAwareInterface和InputFilterProviderInterface之间的区别

来自分类Dev

ZF2表单过滤器和验证器。在哪些情况下,验证程序首先执行?

来自分类Dev

ZF2 Mail UTF-8和Outlook Express

来自分类Dev

ZF2中的Acl和RBAC

来自分类Dev

ZF2表单的CSRF即使无效值也可以验证

来自分类Dev

Django验证表单中的日期和时间

来自分类Dev

ZF2水化器和阵列

来自分类Dev

ZF2初始化程序和TranslatorAwareInterface

来自分类Dev

Zf2 HydratingResultSet和多个实体

来自分类Dev

ZF2呈现自定义类的表单验证错误

来自分类Dev

在ZF2中使用Doctrine模块水化器和表单注释

来自分类Dev

Zf2中的Bootstrap 3表单

来自分类Dev

Zf2表单日期元素在不同浏览器中的问题

来自分类Dev

ZF2从路线获取控制器和动作

来自分类Dev

ZF2导航和站点地图

来自分类Dev

全局更改ZF2表单格式

来自分类Dev

ZF2注释验证程序NotEmpty和Int无法正常工作吗?

来自分类Dev

ZF2表单过滤器和验证器。在哪些情况下,验证程序首先执行?

来自分类Dev

编辑多体关联理论2和zf2

来自分类Dev

从zf2中的表单对象获取输入验证器

来自分类Dev

在zf2中进行表单验证后如何输入计算值

来自分类Dev

ZF2:如何翻译表单注释?

来自分类Dev

Zf2 HydratingResultSet和多个实体

来自分类Dev

zf2验证程序-仅在日期为工作日时有效