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

使用Mccarlosen/Laravel-mpdf无法向Blade模板传数据求助

解决Laravel-mpdf传递模型对象到模板的变量未定义问题

问题出在你传递数据的方式上:loadView方法的第二个参数要求是关联数组,数组的键就是模板中要调用的变量名,而你直接传入了Agency模型实例,导致模板无法识别$agency变量。

修改控制器代码即可解决,有两种写法:

写法一:显式关联数组

public function print(string $id) {
    // 读取模型中的单行数据
    $agency = Agency::find($id);

    // 用关联数组包裹模型,键名对应模板中的$agency变量
    $pdf = PDF::loadView('modules.agencyMain.print', ['agency' => $agency]);

    return $pdf->stream('agency.pdf');
}

写法二:使用compact简化

public function print(string $id) {
    $agency = Agency::find($id);
    
    // compact会自动将变量名转为数组键,对应值为变量内容
    $pdf = PDF::loadView('modules.agencyMain.print', compact('agency'));

    return $pdf->stream('agency.pdf');
}

原理说明:直接传入模型对象时,Laravel会将模型的所有属性拆解为模板中的单个变量(比如你可以直接用{{ $id }}),但这不符合你在模板中通过$agency->id调用的需求。必须将模型放入关联数组中,指定对应的变量名,模板才能正确识别$agency变量并调用其属性。

内容的提问来源于stack exchange,提问作者Natedog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:56