Yii 2.0有一套很好用的验证规则rule,并且可以自定义,只要在model的里面定义好rule
public function rules() {
return [
[['add_time', 'update_time'], 'safe'],
[['status'], 'integer'],
[['name'], 'string', 'max' => 50],
[['auth_ids'], 'string', 'max' => 500],
[['description'], 'string', 'max' => 200],
];
}
使用的时候
$Model = new Model();
$Model->attributes = $data;
$model->validate()
就可以了
很简单
但是我这里要说的是他的自定义rule,之前了解自定义rule,没有发现,其实是可以添加很多参数帮助我们使用的
这是一条自定义的rule
['name', 'only', 'params' => ['message'=>'该角色已经存在','field'=>['name']]],
第一个name是验证的字段,第二个是验证的方法,第三个params就是我们需要用到的所谓的参数,这个参数的数据类型可以是字符串也可以是数组,我们定义好以后,写自定义方法
public function only($attribute, $params) {
//$attribute这个参数是rule里面的第一个参数,$params就是第二个参数了
这里就写你的逻辑
如果验证不通过,我们需要调用addError来输出,这里我有一个疑惑,其实这个rule我们可以写好message的,但是我发现不行,必须到这里使用这个addError才可以??
$this->addError($attribute, $params['message']);
}