2017-05-11 14:27:22 2716次浏览 2条回答 1 悬赏 20 金钱

参考了https://getyii.com/topic/221
但是我没搞明白:'on' => ['default', 'login_sms_code']]什么含义? 'on' => ['login_sms_code']]?

        ['mobile', 'required', 'on' => ['default', 'login_sms_code']],
        ['mobile', 'integer', 'on' => ['login_sms_code']],
        ['mobile', 'match', 'pattern' => '/^1[0-9]{10}$/', 'on' => ['default', 'login_sms_code'],      'message' => '{attribute}必须为1开头的11位纯数字'],
        ['mobile', 'string', 'min' => 11, 'max' => 11, 'on' => ['default', 'login_sms_code']],
        ['mobile', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This mobile has already been taken.'],
        
        ['smsCode', 'required','on' => ['default','login_sms_code']],
        ['smsCode', 'integer','on' => ['default','login_sms_code']],
        ['smsCode', 'string', 'min'=>6,'max' => 6,'on' => ['default','login_sms_code']],
        ['smsCode', 'required','requiredValue'=>$this->getSmsCode(),'on' => ['default','login_sms_code'],'message'=>'手机验证码输入错误'], 

    ];
补充于 2017-05-11 14:28

有更好的方案也可以提出来!!!

最佳答案

  • johnny1991 发布于 2017-05-11 15:54 举报

    yii\base\Model里面有个scenario的概念,中文翻译过来就是‘情景模式’的意思;以你的代码为例,

    'mobile', 'required', 'on' => ['default', 'login_sms_code']
    

    1.$model->setScenario('login_sms_code');
    2.$model->validate();
    3.这时你的这个验证才会生效,不然这个验证是不会生效的
    4.补充一点,默认的scenario是'default'

    2 条回复
    回复于 2017-05-11 20:18 回复

    你说的很对,我找到了一个更详细的文章,http://www.yiichina.com/tutorial/89

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
Mr_Zhu
见习主管

Mr_Zhu

注册时间:2017-01-16
最后登录:2017-08-04
在线时长:13小时12分
  • 粉丝1
  • 金钱295
  • 威望0
  • 积分425

热门问题