Yii框架2.0规则日期验证器

x6h2sr28  于 2022-11-09  发布在  其他
关注(0)|答案(5)|浏览(127)

我正在使用Yii Framework 2.0。我有一个表单,其中有一个用于输入日期的文本字段。我已经阅读了Yii Framework 2.0中关于Class yii\validators\Validator的内容,并且知道所有可以在规则中使用的验证器键()方法。当我像下面这样使用date键时,它并不验证任何东西。这意味着我仍然可以在输入字段中输入一些文本,并可以发布表单。
当我把它修改成booleanemail时,我可以看到当我在输入字段中输入错误时,它的验证效果非常好。我如何在Yii Framework 2.0中验证输入字段中的日期值呢?
我的rules()方法:

public function rules()
{
    return [
         [['inputfield_date'], 'required'],
         [['inputfield_date'], 'safe'],
         [['inputfield_date'], 'date'],
    ];
}

我的检视页面:

<?php $form = ActiveForm::begin(); ?>
     <?= $form->field($model, 'inputfield_date')->textInput(); ?>
<?php ActiveForm::end(); ?>
3gtaxfhh

3gtaxfhh1#

Yii的文档太糟糕了,他们甚至没有给予一个例子。从奥康纳的答案来看,这对我很有效,因为我是以2015-09-11赋值的。

// Rule
[['event_date'], 'date', 'format' => 'php:Y-m-d']
// Assignment
$agkn->event_date = date('Y-m-d');

这些文档甚至没有说明formattimestampAttribute从哪里来,或者如何使用它们。它甚至没有说明from_dateto_date到底是什么。最重要的是,* 没有例子 *!

4ktjp1zp

4ktjp1zp2#

工作解.我的规则()方法:

public function rules()
{
   return [
     [['inputfield_date'], 'required'],
     [['inputfield_date'], 'safe'],
     ['inputfield_date', 'date', 'format' => 'yyyy-M-d H:m:s'],
   ];
}

我在查看页面中的表单:

<?php $form = ActiveForm::begin(); ?>
   <?= $form->field($model, 'inputfield_date')->textInput(); ?>
<?php ActiveForm::end(); ?>

我在控制器中的方法:

if ($model->load(Yii::$app->request->post()) && $model->validate()):
        if($model->save()):
            // some other code here.....
        endif;
endif;

请注意,日期格式取决于您如何定义日期格式输入字段。再次注意,这不是一个 AJAX 验证器。在点击提交按钮后,如果您输入了其他非日期的内容,您将看到错误消息。

bzzcjhmw

bzzcjhmw3#

您可以从模型规则中验证类似的日期

public function rules(){
    return [
        [['date_var'],'date', 'format'=>'d-m-yy'],
        [['from_date', 'to_date'], 'default', 'value' => null],
        [['from_date', 'to_date'], 'date'],
    ];
}
ddarikpa

ddarikpa4#

不知道在Yi2是怎么回事,但是从Yi1出来就得是这个样子......

array('org_datetime', 'date', 'format'=>'yyyy-M-d H:m:s'),

(图片来源:)
......我会说,我在Yii2中必须是这样的:

['shopping_date', 'date', 'format' => 'yyyy-M-d H:m:s'],
lg40wkob

lg40wkob5#

首先,日期验证依赖于$model-〉validate(),因此不能内联工作,而只能通过单击保存触发(即它通常应用于actionCreate/actionUpdate)。
其次,它在其他规则(如“required”)* 之后 * 应用,并且 * 仅 * 当它们通过验证时才应用,因此,即使您单击保存,如果其他任何规则未通过验证,也会显示这些错误,但不会显示日期错误。
总之,只有确保所有其他规则都通过,然后单击“保存”,才能测试日期验证。

相关问题