新版本出來之后,也可以在 controller里面驗證,需要指定兩個變量一個是 $validate $auto 里面指定的規則和 model中一樣。
之前用把自動驗證放在model里面總是有問題,先D實例化model類。
注意:只有先 $user->auto($auto)->validate($validate)->create()生成對象,這樣才支持自動驗證.
然后date數組要保留,因為像我做的這個注冊,如果不用date單獨從post數組中抽出來。
user->add();是不成功的,他默認是post的數據,有了date數組,應該添加的是date數組,放在controller里面一切正常上代碼:
- $user=D('User');
- $data['username']=$_POST['username'];
- $data['password']=$_POST['password'];
- $data['email']=$_POST['email'];
- $validate=array(
- array('username','require','用戶名不能為空',1),
- array('username','','用戶名已經存在',1,'unique',1),
- array('confirm_password','password','確認密碼不正確',0,'confirm'),
- );
- $auto=array(
- array('password','md5',1,'function'),
- array('reg_time','time',1,'function'),
- );
- if($user->auto($auto)->validate($validate)->create())
- {
- $user->add();
- echo $user->getLastSql();exit;
- }
- else
- {
- $this->error($user->getError());
- }
ajax驗證,thinkphp中$.post方式驗證用戶名存在還是不存在,實例代碼如下:
$.post('__URL__/checks',{'username':s,'aa':'bb'},function(data){
alert(data.data.info);
php代碼如下:
- $user=D('User');
- if($user->getByUsername($_POST['username']))
- {
- //info
- //$this->success('已經存在用戶名','1111');
- $this->ajaxReturn(array('info'=>'cunzai','sss'=>'dddd'),"已經存在!",1);
- //這里用 success方法和 ajaxReturn有很大的區別。 ajaxReturn里面可以返回自定義設置。success方式固定返回的參數
- }
- else
- {
- $this->error('不存在用戶名');
- }
新聞熱點
疑難解答
圖片精選