我正在使用Yii Framework 2.0。我有一个表单,其中有一个用于输入日期的文本字段。我已经阅读了Yii Framework 2.0中关于Class yii\validators\Validator的内容,并且知道所有可以在规则中使用的验证器键()方法。当我像下面这样使用date键时,它并不验证任何东西。这意味着我仍然可以在输入字段中输入一些文本,并可以发布表单。
当我把它修改成boolean或email时,我可以看到当我在输入字段中输入错误时,它的验证效果非常好。我如何在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(); ?>
5条答案
按热度按时间3gtaxfhh1#
Yii的文档太糟糕了,他们甚至没有给予一个例子。从奥康纳的答案来看,这对我很有效,因为我是以
2015-09-11
赋值的。这些文档甚至没有说明
format
或timestampAttribute
从哪里来,或者如何使用它们。它甚至没有说明from_date
和to_date
到底是什么。最重要的是,* 没有例子 *!4ktjp1zp2#
工作解.我的规则()方法:
我在查看页面中的表单:
我在控制器中的方法:
请注意,日期格式取决于您如何定义日期格式输入字段。再次注意,这不是一个 AJAX 验证器。在点击提交按钮后,如果您输入了其他非日期的内容,您将看到错误消息。
bzzcjhmw3#
您可以从模型规则中验证类似的日期
ddarikpa4#
不知道在Yi2是怎么回事,但是从Yi1出来就得是这个样子......
(图片来源:)
......我会说,我在Yii2中必须是这样的:
lg40wkob5#
首先,日期验证依赖于$model-〉validate(),因此不能内联工作,而只能通过单击保存触发(即它通常应用于actionCreate/actionUpdate)。
其次,它在其他规则(如“required”)* 之后 * 应用,并且 * 仅 * 当它们通过验证时才应用,因此,即使您单击保存,如果其他任何规则未通过验证,也会显示这些错误,但不会显示日期错误。
总之,只有确保所有其他规则都通过,然后单击“保存”,才能测试日期验证。