我有一个表格,用户必须输入开始日期和结束日期。
我在规则方法中使用了 compare 属性,因为用户无法输入开始日期之前的结束日期。
这是我在表单模型中的规则方法:
['dateFinTR', 'date', 'format' => 'php: d/m/Y'],
['dateFinTR', 'compare', 'compareAttribute' => 'dateDebutTR', 'operator' => '>=', 'skipOnEmpty' => true,]
问题是如果用户输入的开始日期为 2016-05-18,结束日期为 2016-04-17,则会显示错误消息并且用户无法提交表单。但是如果用户输入 2016-05-18 的开始日期和 2016-04-23 的结束日期,则没有错误,用户无法提交表单。事实上,只有一天与这条规则进行比较。
编辑 根据这个链接:Yii2 Date compare validation,我创建了一个自定义验证方法,但我使用的是欧洲格式,所以我认为 strtotime 方法不是很好。这是我的 validateDates 方法:
public function validateDates()
{
if (strtotime($this->dateFinTR) <= strtotime($this->dateDebutTR))
{
$this->addError('dateFinTR', 'Veuillez saisir une date de fin se trouvant avant la date de début');
}
}
这是此方法的调用:
['dateFinTR', 'validateDates', 'skipOnEmpty' => true],