【问题标题】:yii2 Date validation is not workingyii2 日期验证不起作用
【发布时间】: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 的任何验证消息强>比较

【问题讨论】:

  • 首先使用datepickermaskedInput
  • 文档说:注意:默认情况下,如果内联验证器的关联属性接收到空输入,或者它们已经未通过某些验证规则,则不会应用内联验证器。如果要确保始终应用规则,可以在规则声明中将 skipOnEmpty 和/或 skipOnError 属性配置为 false。
  • 不仅如此,@nterms,如果其他任何验证失败,$model->validate() 将无法到达日期验证,因此只能通过确保所有其他规则通过来测试日期验证.

标签: validation yii2 yii2-advanced-app


【解决方案1】:

您的字段模板中似乎没有{error} 标签。尝试添加它。

【讨论】:

  • 仍然无法正常工作..但是当我让它需要像以前一样显示的错误消息
  • 如果你手动调用$model-&gt;validate()然后打印$model-&gt;getErrors()呢?
  • ..现在它的工作..我没有添加 $model->validate().also 它在默认验证之后工作。如果需要名称,它在输入其名称后不显示日期验证显示日期验证..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多