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?
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
Use compact('data')
instead of $data
.
Example:
$pdf = \PDF::loadView('productType.invoice', compact('data'));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With