Laravel 5.8 Dompdf下载PDF遇404及非对象属性错误求助
问题修复方案
你的问题主要源于路由参数缺失和PDF生成时的视图数据传递错误,下面是具体的修复步骤:
1. 修复视图中的下载链接(解决404错误)
你的PDF路由/user/show/question/pdf/{id}要求必须传递id参数,但当前视图里的下载链接没有携带这个参数,导致路由无法匹配,触发404错误。修改链接代码如下:
<a href="{{ route('pdf', ['id' => $pemeliharaan->id, 'download'=>'pdf']) }}">Download PDF</a>
这里通过['id' => $pemeliharaan->id]把当前记录的ID传递给路由,确保能正确匹配到对应的控制器方法。
2. 修复控制器中PDF生成的视图数据传递(解决非对象错误)
当前控制器生成PDF时,直接把$pemeliharaan对象传给了loadView,但视图期望的是名为$pemeliharaan的变量(和正常返回视图时的变量名一致),这会导致视图无法正确识别变量结构,触发Trying to get property 'pertanyaan' of non-object错误。修改控制器代码:
public function showQuestion(Request $request, $id) { $pemeliharaan = Pemeliharaan::findOrFail($id); $pemeliharaan->pertanyaan = json_decode($pemeliharaan->pertanyaan, true); if ($request->has('download')) { // 用compact把变量打包成数组传递,和正常返回视图的方式保持一致 $pdf = PDF::loadView('users.view_question', compact('pemeliharaan')); return $pdf->download('view_question.pdf'); } return view('users.view_question', compact('pemeliharaan')); }
额外验证点
- 确认你的PDF生成库(如dompdf、snappy)已正确安装配置,避免依赖问题引发其他错误;
- 检查
Pemeliharaan模型的pertanyaan字段存储的是有效JSON字符串,确保json_decode后能得到预期数组。
内容的提问来源于stack exchange,提问作者Adhik Mulat
相关产品推荐
相关产品推荐

