自定义validator的问题



class UserPtsValidator extends CValidator


{


	public $naming_pts=100;


    


    public $allowEmpty=true;





	protected function validateAttribute($object,$attribute)


	{


        $value=$object->$attribute;


        if($this->allowEmpty && ($value===null || $value===''))


            return;


                           


        if ($value<$this->naming_pts)


        $message=$this->message!==null?$this->message:Yii::t('yii','test343434343'); 


        $this->addError($object,$attribute,$message);


	}


}


以上代码,当form里面提交的userpts小于100的时候会显示error message,但是当大于等于100的时候就会报错。错误信息Undefined variable: message,错误出现在$this->addError($object,$attribute,$message); 我看了其他的几个validator,好像都是这么写的。btw,我的这个validator的php放在了components目录下。

你的message变量没定义,if后面两条语句应该放在括号里。

啊~ 是花括号的原因。 ;D

其实我做的是一个扣分的操作,用户填写一个表单A(对应AR1),表单A有一个hiddenfield B,在controller里面将其数据从AR2中读出B的数据,并用上面做的validator来做验证,如果少于多少分数就报错,如果大于就通过。然后AR1的aftersave()函数,将AR1的B字段进行update,减去相应分数。

不知道我这样做的一个思路是否是通常的做法。

对,差不多是这样。