【发布时间】:2016-01-21 04:52:53
【问题描述】:
在模型中我有开始和结束日期,我需要比较开始和结束日期。我添加了 格式 的验证规则和 compare 的自定义验证规则
[['start_date','end_date'], 'date', 'format' => 'yyyy-M-d'],
['start_date','validateDates'],
public function validateDates(){
if(strtotime($this->end_date) <= strtotime($this->start_date)){
$this->addError('start_date','Please give correct Start and End dates');
$this->addError('end_date','Please give correct Start and End dates');
}
}
我也尝试过格式验证
[['start_date','end_date'], 'date', 'format' => 'php:Y-m-d'],
在视图文件中,我为设计自定义了开始和结束日期
<?= $form->field($quote, 'start_date',['template' => '{label}{input}<p class="help-block help-block-error">{hint}</p><div class="dtBox"></div>'])->textInput(['data-field' => 'date'])->label("Arrival Date", [
'class' => 'control-label quote-layout-text',
]); ?>
<?= $form->field($quote, 'end_date',['template' => '{label}{input}<p class="help-block help-block-error">{hint}</p><div class="dtBox"></div>'])->textInput(['data-field' => 'date'])->label("Departure Date", [
'class' => 'control-label quote-layout-text',
]); ?>
我向 required 添加了开始和结束日期验证,然后我收到了必填字段的验证消息。但我没有收到 format 和 的任何验证消息强>比较。
【问题讨论】:
-
首先使用
datepicker或maskedInput。 -
文档说:注意:默认情况下,如果内联验证器的关联属性接收到空输入,或者它们已经未通过某些验证规则,则不会应用内联验证器。如果要确保始终应用规则,可以在规则声明中将 skipOnEmpty 和/或 skipOnError 属性配置为 false。
-
不仅如此,@nterms,如果其他任何验证失败,$model->validate() 将无法到达日期验证,因此只能通过确保所有其他规则通过来测试日期验证.
标签: validation yii2 yii2-advanced-app