简单分装一个json返回数据的方法。

在thinkPHP中返回json数据可以用ajaxReturn(), 但我们返回的数据是数组的时候,每次需要组装成数组,这样有点儿麻烦。
所以,尝试对ajaxReturn()方法进行封装。
1.建立一个基础控制器,其他控制器继承自这个基础控制器.
在这个控制器中定义一个方法returnErr()

  1. class BaseController extends Controller
  2. {
  3.  
  4.     /**
  5.      * 返回错误
  6.      * @param $errcode
  7.      * @param $cerrmsg
  8.      * @param $url
  9.      */
  10.     protected function returnErr($errcode,$errmsg,$url){
  11.  
  12.         $errcode&&$mes ['errcode'] = $errcode;
  13.         $errmsg&&$mes ['errmsg'] = $errmsg;
  14.         $url&&$mes ['$url'] = $errmsg;
  15.  
  16.         $this->ajaxReturn($mes);
  17.  
  18.     }
  19.  
  20.  
  21. }
复制代码  
  1. $errcode&&$mes ['errcode'] = $errcode;
  2. 这段代码的意思是如果$errcode为真,则执行后面的赋值语句.
复制代码  

2 .在其他的控制器,继承自baseController.class.php .
这样就可以调用这个returnErr()方法了.

  1. class LoginController extends BaseController
  2. {
  3.       public function login()
  4.     {
  5.         //接收数据
  6.         $cid = I('CorporateId');
  7.         $userName = I('LoginName');
  8.         $password = I('Password');
  9.         $code = I('verify');
  10.  
  11.         //检验验证码
  12.         if(!check_code($code))
  13.         {
  14.             $this->returnErr(1,'captcha is wrong');
  15.         }
  16.    }
  17. }
复制代码  
  1. $this->returnErr(1,'captcha is wrong');
  2. 调用这个返回的信息没有第三个参数.
  3. {"errcode":1,"errmsg":"captcha is wrong"}
复制代码  

如果想要实现即使是调用的时候只有两个参数.

  1. $this->returnErr(1,'captcha is wrong');
复制代码  

但是返回的时候没有传入的参数为'',效果类似

  1. {"errcode":1,"errmsg":"captcha is wrong", 'url':"}
复制代码  

那么封装的时候可以用三元运算符:

  1. class BaseController extends Controller
  2. {
  3.     protected function returnMsg($errcode, $errmsg, $url)
  4.     {
  5.         $data['code'] = $errcode ? $errcode : " ;
  6.         $data['msg'] = $errmsg ? $errmsg : '';
  7.         $data['url'] = $url ? $url : '';
  8.         $this->ajaxReturn($data);
  9.     }
  10. }
上一篇:图形验证逻辑


下一篇:laravel 5.2 使用 captcha 实现 验证码