(Yii)日期时间验证失败


(Yii)Datetime Validation fails

我想验证表单输入,它是要发布文章的日期时间。

$model = new Post('update');
    $model->attributes = $_POST['Post'];
        if($model->validate()){
            //But, validation fails...    
        }

这是我检查输入是否为日期时间格式的规则。我用过这个页面(http://chris-backhouse.com/date-validation-in-yii/528)作为参考。

但我收到了"created"输入的验证错误。

public function rules()
{
    return array(
        //datetime validation
        array('created', 'date', 'message' => '{attribute}: is not a datetime!', 'format' => 'YYYY-MM-DD HH:MM:SS'),
        );
}

这就是我在$models属性中所拥有的。

array(1) { ["created"]=> string(19) "2013-08-01 00:00:01" }

有人知道怎么做吗?

提前感谢!!!

我建议在规则中使用输入格式,因为有时您需要自定义格式。

array('created', 'date', 'format'=>'yyyy-MM-dd hh:mm:ss', 'message'=>'{attribute} have wrong format'),

有关日期格式的更多信息,请点击此处-http://www.yiiframework.com/doc/api/1.1/CDateTimeParser

在Yii 2.0.6(可能还有Yii 1.x?)上,正确的格式是:

['creation_date', 'date', 'format'=>'yyyy-MM-dd HH:mm:ss']

如果时间不在CAPS中,它就不起作用。

这是帖子的创建时间吗?然后你根本不需要验证它,你应该在保存之前设置它,而不是用POST 发送它

将此添加到您的模型中:

public function beforeSave()
{
  if($this->isNewRecord)
  {
     $this->created=new CDbExpression('NOW()');
  }
  return parent::beforeSave();
}