针对未编辑的属性进行验证

时间:2018-07-01 15:06:30

标签: cakephp cakephp-3.0

我有一个实体(Tour),在其使用期限内会经历某种形式的签核过程。

创建后,必须指定开始日期和结束日期以及注册的截止日期。所有这些属性都经过相互验证(例如,开始日期必须在将来,结束日期必须等于或晚于开始日期,截止日期必须在开始日期之前,等等)。

创建新游览时,这很容易验证,因为所有日期都使用相应的表单过帐。但是,在此过程的稍后阶段,只能更改截止日期,开始日期和结束日期已经确定。这就带来了一个问题,即开始日期不再属于发布的数据,但是截止日期对于开始日期仍然有效。

我如何最好地访问正在编辑的实体的开始日期以验证截止日期?

我到目前为止一直在考虑:

  • 使用发布的实体ID将实体加载到验证规则中。我不喜欢这种方法,因为我有几个这样的验证,并且每个验证都会彼此独立地加载实体。
  • 更改发布的数据以包括原始实体的开始日期。这将为所有需要它的验证规则提供开始日期,但会更改发布的数据,这可能会导致进一步的问题。

您还有其他建议吗?也许我可以实现一个钩子,以便将某些东西注入到验证上下文中,并以这种方式为实体提供开始日期?

0 个答案:

没有答案