DOMPDF loadView() error - undefined variable: data

cchapman picture cchapman · Jan 29, 2015 · Viewed 18.5k times · Source

I'm currently trying to incorporate the DOMPDF Wrapper for Laravel into my project, however I'm having troble figuring out how to pass a variable into the PDF template.

As per the instructions, in my controller I have:

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

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

and in my view:

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

But when I try to render the page, I get the error:

ErrorException (E_UNKNOWN) 
Undefined variable: data

I'm not sure why the loadView() method is not passing the $data variable to the view. Is there a step I'm missing in setting it up in the controller and/or view?

Answer

StephenMtl picture StephenMtl · Jan 29, 2015

The loadView method you are using is going to use the extract method before passing the data to the views. This method extracts all the array elements, and creates variables for them based on the key of the element

This means that your array keys are going to be your variable names, ie $name and not $data->name. This is fairly standard in laravel, for example when using Blade Views.

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