特定于场景的Yii2验证规则

use*_*282 8 yii2

我有以下规则和方案

public function rules(){
        return [
            [['name','email','password'],'required'],
            ['email','myvalidation'],
            ['email','email'],
            [['name', 'email', 'password'], 'required', 'on' => 'register'],
            ];
    }




public function scenarios()
    {
        $scenarios = parent::scenarios();
        $scenarios['login'] = ['name','password','email'];//Scenario Values Only Accepted
        return $scenarios;
    }
Run Code Online (Sandbox Code Playgroud)

我希望rule 'myvalidation'仅应用于login场景而在其他情况下根本不应用.如何实现这一点Yii2

Edu*_*rdo 16

请记住,您也可以使用"除外".例如:

    public function rules()
        {
            return [
                [['first_name', 'email', 'phone', 'password'], 'required', 'except' => 'changepassword'],
                [['password'], 'required', 'on' => 'changepassword']
]}
Run Code Online (Sandbox Code Playgroud)


aro*_*hev 13

只要指定有关在此验证规则属性:

['email', 'myvalidation', 'on' => 'login'],
Run Code Online (Sandbox Code Playgroud)