我想验证表单输入,该表单输入是要发布的文章的日期时间。
$model = new Post('update');
$model->attributes = $_POST['Post'];
if($model->validate()){
//But, validation fails...
}
这是我必须检查输入是否是日期时间格式的规则。 我使用此页面(http://chris-backhouse.com/date-validation-in-yii/528)作为参考。
但我得到'created'input的验证错误。
public function rules()
{
return array(
//datetime validation
array('created', 'date', 'message' => '{attribute}: is not a datetime!', 'format' => 'YYYY-MM-DD HH:MM:SS'),
);
}
这就是我在$ models-attribute中所拥有的。
array(1) { ["created"]=> string(19) "2013-08-01 00:00:01" }
有谁知道如何使这项工作?
提前多多感谢!!!
答案 0 :(得分:2)
我建议在规则中使用输入格式,因为有时你需要自定义格式。
array('created', 'date', 'format'=>'yyyy-MM-dd hh:mm:ss', 'message'=>'{attribute} have wrong format'),
有关日期格式的更多信息,请访问http://www.yiiframework.com/doc/api/1.1/CDateTimeParser
答案 1 :(得分:1)
在Yii 2.0.6(也许是Yii 1.x?)上,正确的格式是:
['creation_date', 'date', 'format'=>'yyyy-MM-dd HH:mm:ss']
如果小时数不在CAPS中,它就无法正常工作。
答案 2 :(得分:0)
该帖子的创作时间是?然后你根本不需要验证它,你应该在beforeSave中设置它而不是用POST发送它
将此添加到您的模型中:
public function beforeSave()
{
if($this->isNewRecord)
{
$this->created=new CDbExpression('NOW()');
}
return parent::beforeSave();
}