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

Laravel domPDF报错:尝试在布尔值上读取属性"judul_khotbah"

解决Laravel单条讲道数据PDF打印报错及空白问题

问题根源

  • 报错Attempt to read property "judul_khotbah" on bool:Khotbah::find($id_khotbah)在找不到对应ID的记录时会返回布尔值false(或null),原视图用@foreach循环这个非集合/数组的变量,遍历过程中尝试读取布尔值的属性导致报错。
  • 添加判断后仍空白:count((array) $khotbah)对false或null转数组后长度为0,判断不成立,因此不执行循环,PDF输出空白页面。

解决方案

1. 修正控制器代码

确保传递给视图的是有效模型实例,同时处理数据不存在的场景:

public function generatePdf(Request $request, $id_khotbah)
{
    // 找不到记录时直接返回404,避免无效值传入视图
    $khotbah = Khotbah::findOrFail($id_khotbah);
    
    $pdf = Pdf::loadView('dashboard.khotbahPdf', compact('khotbah'));
    return $pdf->download('RingkasanKhotbah.pdf');
}

如果不想返回404,可手动处理无数据情况:

public function generatePdf(Request $request, $id_khotbah)
{
    $khotbah = Khotbah::find($id_khotbah);
    
    // 无数据时返回提示或跳转
    if (!$khotbah) {
        return redirect()->back()->with('error', '讲道数据不存在');
    }
    
    $pdf = Pdf::loadView('dashboard.khotbahPdf', compact('khotbah'));
    return $pdf->download('RingkasanKhotbah.pdf');
}

2. 修正Blade视图代码

因为是单条数据,无需使用@foreach循环,直接读取模型属性并添加存在判断:

<body>
    @if($khotbah)
        <div class="book">
            <div class="page">
                <div class="subpage">
                    <h1>Judul Khotbah : {{ $khotbah->judul_khotbah }}</h1>
                    <h5>Tanggal : {{ $khotbah->tanggal_khotbah }}</h5>
                    <h5>Pembicara : {{ $khotbah->pembicara }}</h5>
                    <br>
                    <p>{{ $khotbah->isi_khotbah }}</p>
                </div>
            </div>
        </div>
    @else
        <div class="book">
            <div class="page">
                <div class="subpage">
                    <p>讲道数据不存在</p>
                </div>
            </div>
        </div>
    @endif
</body>

注:视图中的@method('put')和@csrf是表单提交专用代码,PDF打印页面无需保留,建议移除。

内容的提问来源于stack exchange,提问作者Joshia Agrisa Anrhiely Luther

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:50:10