YII2表单验证问题:注册时ajax验证手机号唯一 [ 未指定版本 ]
情景:我在验证规则里写了手机号码唯一,同时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代码?
最佳答案
-
应用程序初始化的用户名唯一验证的代码如下:
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => '此用户名已经被使用。'],
应该加上targetClass。
共 9 条回复@Ricky_nie 这个值对应的是用户名所在表的model
@Ricky_nie 确实 targetClass 写 app\models\User, 不会验证啊。后来怎么解决的,求赐教
@Ricky_nie common\models 下要建一个 User 模型?
@Ricky_nie 那不是app\models\User吗?
@Ricky_nie 学习了,谢谢
其他 1 个回答
-
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 条回复
Ricky_nie
注册时间:2014-08-21
最后登录:2018-07-15
在线时长:135小时52分
最后登录:2018-07-15
在线时长:135小时52分
- 粉丝42
- 金钱24358
- 威望60
- 积分26308