使用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
相关产品推荐
相关产品推荐

