0 评论

0 收藏

分享

[PHP以及PHP框架相关] 06百融云策略引擎项目交付-laravel实战完整交付导出pdf文件报错Fatal error : Uncaugh

06百融云策略引擎项目交付-laravel实战完整交付导出pdf文件报错Fatal error : Uncaught Error: Call to undefined method解决-优雅草卓伊凡引言
此前只是把关于如何把查询内容导出pdf库的代码实现了,但是我们并没有完成整个项目,这最后一个步骤就是安装composer再安装tcpdf库,最后修改结构目录实现完整项目功能,查询得到结果导出pdf库,本篇调整目录结构,分文件实现代码,完整交付过程完成交付。
演示demo地址
bairong.youyacao.com
完整报错
Fatal error : Uncaught Error: Call to undefined method PDFGenerator::generatePhoneVerification() in /www/wwwroot/bairong.youyacao.com/lib/PDFGenerator.php:61 Stack trace: #0 /www/wwwroot/bairong.youyacao.com/lib/PDFGenerator.php(307): PDFGenerator::generateResultPDF() #1 /www/wwwroot/bairong.youyacao.com/index.php(20): require_once(‘…’) #2 {main} thrown in /www/wwwroot/bairong.youyacao.com/lib/PDFGenerator.php on line 61
实战开始
报告了一个错误,看起来是在 PDFGenerator.php 文件的第61行调用了一个未定义的方法generatePhoneVerification() 。我需要先查看这个文件的内容,了解具体的错误情况,然后进行修复。
首先,我应该使用 view_files 工具来查看 PDFGenerator.php 文件的内容,特别是第61行附近的代码。
我发现了问题:PDFGenerator.php 文件在第61行调用了 self::generatePhoneVerification() 方法,
   // 定义输出文件名        $filename = 'verify_result_'.date('YmdHis').'.pdf';        $filepath = TEMP_PATH.'/'.$filename;
已经成功添加了缺失的 generatePhoneVerification 方法。现在我需要检查是否还需要实现 generateSpecialList 方法,因为在调用链中也使用了这个方法。让我查看一下文件中的相关部分。
发现还需要实现 generateSpecialList 方法,因为在第63行也调用了这个未定义的方法。我将实现这个方法,参考之前添加的 generatePhoneVerification 方法的模式。
已经解决了PDF导出报错的问题。具体修改如下:
  • 1.
    实现了缺失的两个方法:
    • generatePhoneVerification() :用于在PDF中生成手机信息验证部分
    • generateSpecialList() :用于在PDF中生成特殊名单检查部分
  • 2.
    修复了PDFGenerator.php文件的结构问题:
    • 移除了不属于该类的代码(如表单处理逻辑和HTML注释)
    • 确保文件只包含完整的PDFGenerator类定义和相关方法
  • 3.
    改进了文件路径处理:
    • 使用 TEMP_PATH 常量代替 sys_get_temp_dir() ,保持与项目其他部分一致
    • 修正了文件开头的引入路径,使用相对路径确保正确加载依赖
      这些修改解决了”调用未定义方法PDFGenerator::generatePhoneVerification()”的错误,现在PDF导出功能应该可以正常工作了。

现在pdf导出 点击虽然没有报错了 但是也没有什么反应,
发现表单提交后没有处理PDF导出请求的逻辑。我需要在index.php中添加处理’export_pdf’参数的代码,当检测到该参数时,生成PDF并设置正确的下载响应头。
// 处理PDF导出请求    if (isset($_POST['export_pdf']) && !isset($result['error'])) {        $queryParams = [            'name' => $name,            'id_number' => $idNumber,            'phone' => $phone        ];        // 生成PDF文件        $pdfFile = PDFGenerator::generateResultPDF($result, $queryParams);        // 检查文件是否存在        if (file_exists($pdfFile)) {            // 设置响应头,触发文件下载            header('Content-Type: application/pdf');            header('Content-Disposition: attachment; filename="verify_report_'.date('YmdHis').'.pdf"');            header('Content-Length: ' . filesize($pdfFile));            // 输出文件内容            readfile($pdfFile);            // 删除临时文件            unlink($pdfFile);            exit;        } else {            $result = ['error' => 'PDF文件生成失败,请重试'];        }
ok 测试成功下载
再下载看看文件是否正确
ok 本项目完整交付,其次本项目产品可以规划出来, 以后各类其他平台查询可以配置,目前百融云只是第一家金融机构。







优雅草论坛2022年8月11日大改,优雅草论坛变回只服务于客户的提问交流论坛,详情查看优雅草8月11日大改,原因详情查优雅草外卖乐关闭

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
yac2025
优雅草的临时工
主题 268
回复 0
粉丝 0