tp5不要在try catch 中使用succes和error方法

本文介绍了在TP5框架中,不应该在try-catch结构内使用内置的success和error方法,因为这可能导致页面自动跳转且无提示信息。解决方法包括将返回操作移出try-catch或者自定义success和error方法,通过响应方式返回客户端,避免使用HttpResponseException。文章提供了实现自定义方法的步骤,并引用了相关源码作为参考资料。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值