2017-10-20 15:36:27 2007次浏览 3条回答 0 悬赏 10 金钱

models 里的 users模型:

    public function rules(){
        return [
            ['username', 'required', 'when' => function($model) {
                return $model->email=='abc';
            }]
        ];
    }

view:
5F11F7C3-0A0C-4865-8FE8-8BBA0537B2FA.png

1111111.png

问题:如图所示。我已经在邮件输入了abc,或输入其他都会验证。为什么呢?

最佳答案

  • drodata 发布于 2017-10-21 19:13 举报

    whenClient 值写得有问题吧?

    'whenClient' => "function (attribute, value) {
        // 假设 email 文本框 id 属性为 login-email, 改成 return $('#login-email').val() == 'abc';
        return $('#email').value == 'abc';
    }"
    
  • 回答于 2017-10-20 15:58 举报

    你这个不是验证username吗?你填写的是email

    1 条回复
    回复于 2017-10-20 16:00 回复

    我理解的意思是,如果email的值是abc,那么username就不去验证,如果email填写的是其他值就会去验证。

  • 回答于 2017-10-20 16:14 举报

    你model里面写的是验证规则,这个规则如果你save()的时候应该是可以的。

    页面上这块是前端验证,你可以把前端的验证规则临时禁用下试试、、、

    2 条回复
    回复于 2017-10-20 16:31 回复
        ['username', 'required', 'when' => function ($model) {
              return $model->email == 'abc';
          }, 'whenClient' => "function (attribute, value) {
              return $('#email').value == 'abc';
        }"]
    

    这样写,前端随便输入 asdfasdfas 也会是验证username不能为空

    回复于 2017-10-20 16:35 回复

    save也不行

您需要登录后才可以回答。登录 | 立即注册
灰太狼
副总裁

灰太狼

注册时间:2016-11-19
最后登录:2023-07-14
在线时长:76小时17分
  • 粉丝28
  • 金钱3290
  • 威望150
  • 积分5550

热门问题