Yii中的模型字段校验有场景的概念,不同的场景可以设置不同的校验规则。Yii中默认的场景是default,简单实现如下。我用的是user表,表中的字段是user_name,密码很简单。规则如下publicfunctionrules(){return[[['user_name','password'],'required'],[['user_name','password'],'string','max'=>255],];}一:如果我们在添加的时候需要验证user_name和password字段,更新的时候只验证user_name字段。这时候我们可以重写模型中的yiibaseModel::scenarios()方法来自定义行为scene'update'=>['user_name'],//update表示更新场景];}根据上面设置的场景规则,我们只需要在添加和更新的时候设置为指定的场景即可//Scenario设置为属性$model=newUser;$model->scenario='create';//通过构造初始化配置设置场景$model=newUser(['scenario'=>'create']);根据以上,指定字段可以在不同的场景下进行验证2:我们可以通过规则中的on属性来设置不同的场景publicfunctionrules(){return[[['id'],'integer'],[['user_name'],'required'],[['password'],'required','on'=>'create'][['user_name','password'],'string','max'=>255],];}根据上面的说明,创建场景中必须填写密码字段。三:使用yiibaseModel::validate()验证接收到的数据$model=newUser();$model->validate(['user_name'])使用validate方法验证user_name,验证返回true,否则返回false
