【问题标题】:DOMPDF loadView() error - undefined variable: dataDOMPDF loadView() 错误 - 未定义的变量:数据
【发布时间】:2017-06-22 15:18:23
【问题描述】:

我目前正在尝试将DOMPDF Wrapper for Laravel 合并到我的项目中,但是我无法弄清楚如何将变量传递到 PDF 模板中。

按照说明,在我的控制器中,我有:

//PrintController.php
$data = array('name'=>'John Smith', 'date'=>'1/29/15');

$pdf = PDF::loadView('contract', $data);
return $pdf->stream('temp.pdf');

在我看来:

//contract.php
...
<p><?php echo $data->name ?><p>
<p>Signature</p>

但是当我尝试渲染页面时,我得到了错误:

ErrorException (E_UNKNOWN) 
Undefined variable: data

我不确定为什么loadView() 方法没有将$data 变量传递给视图。在控制器和/或视图中设置它时是否缺少步骤?

【问题讨论】:

    标签: php laravel dompdf


    【解决方案1】:

    您正在使用的 loadView 方法将在将数据传递给视图之前使用 extract 方法。该方法提取所有数组元素,并根据元素的键为它们创建变量

    这意味着您的数组键将是您的变量名,即$name 而不是$data->name。这在 laravel 中是相当标准的,例如在使用 Blade Views 时。

    http://php.net/manual/en/function.extract.php

    【讨论】:

    【解决方案2】:

    使用compact('data') 而不是$data

    例子:

    $pdf = \PDF::loadView('productType.invoice', compact('data'));
    

    【讨论】:

    • 然后您可以通过@foreach ($data as $row) 访问并在foreach 内部使用$row-&gt;name
    猜你喜欢
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2018-05-03
    相关资源
    最近更新 更多