(Yii)日期时间验证失败

时间:2013-08-13 01:22:01

标签: php validation yii

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

$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" }

有谁知道如何使这项工作?

提前多多感谢!!!

3 个答案:

答案 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();
}