2

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

$model = new Post('update');
    $model->attributes = $_POST['Post'];

        if($model->validate()){

            //But, validation fails...    

        }

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

但是我收到“已创建”输入的验证错误。

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

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

非常感谢提前!!!

4

3 回答 3

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

于 2013-08-13T06:46:25.300 回答
1

在 Yii 2.0.6(也许是 Yii 1.x ?)上,正确的格式是:

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

如果小时不在 CAPS 中,则它不起作用。

于 2015-11-06T22:29:42.990 回答
0

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

将此添加到您的模型中:

public function beforeSave()
{
  if($this->isNewRecord)
  {
     $this->created=new CDbExpression('NOW()');
  }
  return parent::beforeSave();
}
于 2013-08-13T06:45:00.570 回答