Yii Framework 2.0规则日期验证器

O C*_*nor 14 php validation date yii yii2

我正在使用Yii Framework 2.0.我有一个带有文本输入字段的表单,用于表示日期.我已经阅读了有关类yii\validators\Validator的Yii Framework 2.0 以及已知的所有验证器密钥,这些密钥可以在模型类的rules()方法中使用.当我使用如下的日期键时,它不会验证任何内容.这意味着我仍然可以在该输入字段中放置一些文本并可以发布表单.

当我将其更改为布尔值电子邮件时,我可以看到,当我在输入字段中输入错误时,它会很好地验证.如何使用Yii Framework 2.0验证输入字段内的日期值?

我的rules()方法:

public function rules()
{
    return [
         [['inputfield_date'], 'required'],
         [['inputfield_date'], 'safe'],
         [['inputfield_date'], 'date'],
    ];
}
Run Code Online (Sandbox Code Playgroud)

我的观点页面:

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

Chl*_*loe 28

男孩Yii docs很糟糕.他们甚至没有举个例子.根据O'Connor的回答,这对我有用,因为我在2015-09-11格式中分配了价值.

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

文档甚至不指定formattimestampAttribute从,或如何使用它们来了.它甚至没有说什么的挫折感from_dateto_date是.最重要的是,没有例子!


O C*_*nor 7

工作方案.我的rules()方法:

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

我在浏览页面中的表单:

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

我在控制器中的方法:

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

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

  • 我试过这个没有运气。同样的事情发生了 dateValidator 即使在提交表单后也根本不验证 (2认同)

web*_*eno 1

不是 100% 确定它在 Yii2 中是怎样的,但是从 Yii1 中出来必须看起来像这样......

array('org_datetime', 'date', 'format'=>'yyyy-M-d H:m:s'),
Run Code Online (Sandbox Code Playgroud)

(来源: http: //www.yiiframework.com/wiki/56/#hh8

...我想说我必须在 Yii2 中看起来像这样:

['shopping_date', 'date', 'format' => 'yyyy-M-d H:m:s'],
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚开始工作。你的代码是正确的,但是这个方法需要在控制器 **$model-&gt;validate()** 中调用,Gii 省略了该方法。使用此方法,它将按照上述规则验证输入,但它不是 AJAX 验证器。可以忍受它。 (2认同)