e282486518 2017-07-13 16:47:07 3994次浏览 0条评论 0 0 0

model验证是的错误消息未必是我们想要的,所以的自定义错误消息。
model验证的本质是调用validators文件夹下面的各种验证类来实现验证的。
打开其中的一个类文件的validateAttribute()方法,我们可以看到如下代码:

		if($this->min!==null && $length<$this->min)
		{
			$message=$this->tooShort!==null?$this->tooShort:Yii::t('yii','{attribute} is too short (minimum is {min} characters).');
			$this->addError($object,$attribute,$message,array('{min}'=>$this->min));
		}
		if($this->max!==null && $length>$this->max)
		{
			$message=$this->tooLong!==null?$this->tooLong:Yii::t('yii','{attribute} is too long (maximum is {max} characters).');
			$this->addError($object,$attribute,$message,array('{max}'=>$this->max));
		}
		if($this->is!==null && $length!==$this->is)
		{
			$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} is of the wrong length (should be {length} characters).');
			$this->addError($object,$attribute,$message,array('{length}'=>$this->is));
		}

这个是字符串验证类的类文件,发现字符串有3中验证方式,1、字符串字数最小;2、字符串字数最多;3、字符串长度等于。
于是我们在写rules中就可以这样自定义其内容:

['attr', 'length', 'max'=>80,'min'=>10, 'tooLong'=>'{attribute}字数过多','tooShort'=>'字数过少'],

获取错误的方法是$model->getErrors()

    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册