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)
该文档甚至不指定format或timestampAttribute从,或如何使用它们来了.它甚至没有说什么的挫折感from_date和to_date是.最重要的是,没有例子!
工作方案.我的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验证器.单击提交按钮后,如果输入其他不是日期的内容,您将看到错误消息.
不是 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)