tp5不要在try catch 内使用框架自带的succes和error方法;
原文地址:https://www.xianhenyuan.com/archives/305
就像这样
:
///新增操作
$AdminUserModel = model('AdminUser');
try{
$user_id = $AdminUserModel->add($data);
empty($user_id) ? $this->error("error") : $this->success("success,id={$user_id}");
}catch(\Exception $e){
trace($e->getTraceAsString(),'error');
$this->error($e->getMessage());
}
无论执行什么操作都会返回这样的一个页面:
:(
页面自动 跳转 等待时间: 2
产生这种情况的原因是,
目前 tp5 内置的 success 和 error 方法,
返回的是 throw new HttpResponseException($response);
那么 try 方法体肯定会捕捉到,
那么 catch 中刚好调用了 error 方法 ,
所以会一直返回 :(
且无任何提示信息。
解决这一问题的方法有多种:
- 将返回放到 try catch 外
///新增操作
$AdminUserModel = model('AdminUser');
try{
$user_id = $AdminUserModel->add($data);
}catch(\Exception $e){
trace($e->getTraceAsString(),'error');
$this->error($e->getMessage());
}
empty($user_id) ? $this->error("error") : $this->success("success,id={$user_id}");
die;
- 自定义success 和 error 方法
1、在 common.php 添加使用到的公共方法:
/**
* XML编码
* @param mixed $data 数据
* @param string $root 根节点名
* @param string $item 数字索引的子节点名
* @param string $attr 根节点属性
* @param string $id 数字索引子节点key转换的属性名
* @param string $encoding 数据编码
* @return string
*/
function xml_encode($data, $root='think', $item