Ошибка DOMPDF loadView() - неопределенная переменная: данные

В настоящее время я пытаюсь включить в свой проект оболочку DOMPDF для 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 в представление. Есть ли шаг, который я пропустил при настройке в контроллере и/или представлении?


person cchapman    schedule 29.01.2015    source источник


Ответы (2)


Используемый вами метод loadView будет использовать метод извлечения перед передачей данных в представления. Этот метод извлекает все элементы массива и создает для них переменные на основе ключа элемента.

Это означает, что ключами вашего массива будут имена ваших переменных, то есть $name, а не $data->name. Это довольно стандартно в laravel, например, при использовании Blade Views.

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

person StephenMtl    schedule 29.01.2015
comment
Используемая оболочка вызывает $this-›view-›make, поэтому информация на следующей странице может оказаться полезной: laravel.com/docs/4.2/responses#views - person StephenMtl; 29.01.2015

Используйте compact('data') вместо $data.

Пример:

$pdf = \PDF::loadView('productType.invoice', compact('data'));
person RANJITH    schedule 22.06.2017
comment
тогда вы можете получить доступ через @foreach ($data as $row) и внутри foreach с помощью $row->name - person Daniel Juric; 17.03.2021