PHP7中文手册2018 带注释 最新chm版
不要说不懂英文,看下面的代码就行了
public function rules() { return array( array('message_id, subject, modified_at', 'required'), ... array('address', 'addressNotInUseByUser', 'on'=>'insert'), ... ); }
Note the $ symbol must be used on both $this-> and $attribute public function.
// for validating inserts public function addressNotInUseByUser($attribute) { if (!Yii::app()->user->isGuest and Elist::model()->exists('address=:address and owner_id=:owner_id',array(':address'=>$this->$attribute,':owner_id'=>Yii::app()->user->id))) $this->addError($attribute, 'Sorry, you\'re already using that name for another list.'); }
// for validating updates // called from Controller::Update() action before save as shown below public function addressAlreadyInUse($address,$list_id,$owner_id) { if (Elist::model()->active()->countByAttributes(array('address'=>$address,'owner_id'=>$owner_id),'id<>'.$list_id)>0) { return true; } else return false; }
Here’s code in the controller during the Update action that calls the validation rule with paramaters before saving the changed record:
if(isset($_POST['Elist'])) { $model->attributes=$_POST['Elist']; $model->full_address=$model->address.'@easylist.io'; if ($model->prefix=='') $model->prefix = $model->address; if ($model->addressAlreadyInUse($model->address,$model->id,$model->owner_id)) { Yii::app()->user->setFlash('update_duplicate','Sorry, you already have a list with that name.'); $this->redirect(array('update','id'=>$model->id)); } if($model->save()) $this->redirect(array('view','id'=>$model->id)); }
转载请注明:谷谷点程序 » yii 自定义rules错误信息