2014-09-21 19:22:26 25445次浏览 2条回答 12 悬赏 0 金钱

情景:我在验证规则里写了手机号码唯一,同时ajax验证也开启了,但是只有其他的验证能在ajax验证(比如手机号码格式,密码位数或者两次密码时候一致等等,只有这个唯一值没法ajax验证o(╯□╰)o)。
rules代码

public function rules()
    {
        return [
            [['password','re_password','new_password'], 'string','min'=>6, 'max' => 16,'message'=>'{attribute}位数为6至16位'],
            [['phone'], 'unique','message'=>'{attribute}已经被占用了'],
            ['phone','match','pattern'=>'/^1[0-9]{10}$/','message'=>'{attribute}必须为1开头的11位纯数字'],
            [['phone','password'],'required','on'=>'login','message'=>'{attribute}不能为空'],
            ['re_password','compare','compareAttribute'=>'password','message'=>'两次密码不一致'],
        ];
    }

难道本屌还得自己写js代码?

最佳答案

  • ╃巡洋艦㊣ 发布于 2014-09-21 20:18 举报

    应用程序初始化的用户名唯一验证的代码如下:

    ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => '此用户名已经被使用。'],

    应该加上targetClass。

    9 条回复
    回复于 2014-09-21 20:29 回复

    targetClass的值应该填什么?我照你的填报错,填\app\models\User不报错,但是也只有在点击提交之后才能验证是否被注册,前台没法验证

    回复于 2015-05-14 11:01 回复

    这个值对应的是用户名所在表的model

    回复于 2015-08-25 17:07 回复

    确实 targetClass 写 app\models\User, 不会验证啊。后来怎么解决的,求赐教

    回复于 2015-08-26 09:01 回复

    高级模型要用common\models\User

    回复于 2015-08-26 09:22 回复

    common\models 下要建一个 User 模型?

    回复于 2015-08-27 09:09 回复

    高级模型默认不就是有一个吗?

    回复于 2015-08-27 14:29 回复

    那不是app\models\User吗?

    回复于 2015-08-27 16:23 回复

    高级模板里是common\models\User,在基础模板里才是app\models\User

    回复于 2015-08-27 18:06 回复

    学习了,谢谢

  • 回答于 2015-07-01 19:11 举报
    public function rules()
        {
            return [
                [['password','re_password','new_password'], 'string','min'=>6, 'max' => 16,'message'=>'{attribute}位数为6至16位'],
                [['phone'], 'unique','message'=>'{attribute}已经被占用了'],
                ['phone','match','pattern'=>'/^1[0-9]{10}$/','message'=>'{attribute}必须为1开头的11位纯数字'],
                [['phone','password'],'required','on'=>'login','message'=>'{attribute}不能为空'],
                ['re_password','compare','compareAttribute'=>'password','message'=>'两次密码不一致'],
            ];
        }
    

    对于验证,yii是不是按照那个rules里面数组从上往下的顺序验证的? 如果某个字段未验证通过,后面的字段就不会验证了,是这样?
    因为可能需求,比如我的手机验证通过后,才能验证该手机所发的验证码是否正确?如果手机都不正确,验证手机发送的验证码是否正确就会出问题!

    1 条回复
    回复于 2016-12-14 23:54 回复

    这个倒是个问题,只要没有判断语句,只要验证都应该是依次验证的,不管通没通过,但这个判断怎么写呢?

您需要登录后才可以回答。登录 | 立即注册
Ricky_nie
副董事长

Ricky_nie

注册时间:2014-08-21
最后登录:2018-07-15
在线时长:135小时52分
  • 粉丝42
  • 金钱24358
  • 威望60
  • 积分26308

热门问题