所以,尝试对ajaxReturn()方法进行封装。
1.建立一个基础控制器,其他控制器继承自这个基础控制器.
在这个控制器中定义一个方法returnErr()
class BaseController extends Controller
{
/**
* 返回错误
* @param $errcode
* @param $cerrmsg
* @param $url
*/
protected function returnErr($errcode,$errmsg,$url){
$errcode&&$mes ['errcode'] = $errcode;
$errmsg&&$mes ['errmsg'] = $errmsg;
$url&&$mes ['$url'] = $errmsg;
$this->ajaxReturn($mes);
}
}
$errcode&&$mes ['errcode'] = $errcode;
这段代码的意思是如果$errcode为真,则执行后面的赋值语句.
2 .在其他的控制器,继承自ba这样就可以调用这个returnErr()方法了.
class LoginController extends BaseController
{
public function login()
{
//接收数据
$cid = I('CorporateId');
$userName = I('LoginName');
$password = I('Password');
$code = I('verify');
//检验验证码
if(!check_code($code))
{
$this->returnErr(1,'captcha is wrong');
}
}
}
$this->returnErr(1,'captcha is wrong');
调用这个返回的信息没有第三个参数.
{"errcode":1,"errmsg":"captcha is wrong"}
如果想要实现即使是调用的时候只有两个参数.$this->returnErr(1,'captcha is wrong');
但是返回的时候没有传入的参数为'',效果类似{"errcode":1,"errmsg":"captcha is wrong", 'url':"}
那么封装的时候可以用三元运算符:class BaseController extends Controller
{
protected function returnMsg($errcode, $errmsg, $url)
{
$data['code'] = $errcode ? $errcode : " ;
$data['msg'] = $errmsg ? $errmsg : '';
$data['url'] = $url ? $url : '';
$this->ajaxReturn($data);
}
}