Php (Yii)日期时间验证失败
我想验证表单输入,它是文章发布的日期时间Php (Yii)日期时间验证失败,php,validation,yii,Php,Validation,Yii,我想验证表单输入,它是文章发布的日期时间 $model = new Post('update'); $model->attributes = $_POST['Post']; if($model->validate()){ //But, validation fails... } 这是我检查输入是否为datetime格式的规则。 我使用此页()作为参考 但我得到了“已创建”输入的验证错误 public fu
$model = new Post('update');
$model->attributes = $_POST['Post'];
if($model->validate()){
//But, validation fails...
}
这是我检查输入是否为datetime格式的规则。
我使用此页()作为参考
但我得到了“已创建”输入的验证错误
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" }
有人知道怎么做吗
提前谢谢大家 这是帖子的创建时间吗?然后,您根本不需要验证它,您应该在beforeSave中设置它,而不是将其与POST一起发送 将此添加到您的模型中:
public function beforeSave()
{
if($this->isNewRecord)
{
$this->created=new CDbExpression('NOW()');
}
return parent::beforeSave();
}
我建议在规则中使用输入格式,因为有时您需要自定义格式
array('created', 'date', 'format'=>'yyyy-MM-dd hh:mm:ss', 'message'=>'{attribute} have wrong format'),
有关日期格式的更多信息,请参见这里-在Yii 2.0.6(可能还有Yii 1.x?)上,正确的格式是:
['creation_date', 'date', 'format'=>'yyyy-MM-dd HH:mm:ss']
如果时间不在上限内,它就不能工作。>这是帖子的创建时间吗?不完全是。这可能是该帖子计划在未来发布的时间。我编写的规则和你的规则有什么区别?看起来是一样的。数组('created','date','message'=>'{attribute}:不是日期时间!','format'=>'YYYY-MM-DD HH:MM:SS'),日期验证程序使用日期格式调用
CDateTimeParser::parse()
函数。这个函数有严格的格式,如果你不明白大小写的区别,我帮不了你。它的构造类似于switch($token){case'yyyy':{if($year=self::parseInteger($value,$i,4,4))==false)返回false;$i+=4;break;}
你的yyyy
会传递它吗,或者在默认情况下会返回false?date('d')
会返回13和date('d'))
returnTue
。因此,请下次思考你在写什么,阅读别人给你的文章。很抱歉迟了给你回复!非常感谢你添加评论。虽然我还没有尝试过,但我想我现在明白如何解决我的问题了。