You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:48:32