2016-12-30 3 views
2

Я хочу создать DOMPDF с laravel, и я должен передать свою переменную для просмотра. Я пытаюсь передать переменную, как показано ниже, но она все еще не работает.Передача переменной из контроллера DOMPDF для просмотра

здесь мой Laravel контроллер

public function pdf(Request $request, $id){ 
    $salesorder = $this->show($id)->salesorder; 
    $detailservice = $this->show($id)->detailservice; 
    $detailemployee = $this->show($id)->detailemployee; 

    $data = [$salesorder, $detailemployee, $detailservice]; 

    $pdf = PDF::loadView('summary.invoice', $data); 
    return $pdf->download('invoice.pdf'); 
} 

ошибка на мой взгляд:

Неопределенная переменная: SalesOrder

Как проходя некоторую переменную из контроллера Laravel в DOMPDF?

PS: dd($data) результат правильно

ответ

2

Вы должны пройти data ниже

$data = [ 
    'salesorder'  => $salesorder, 
    'detailemployee' => $detailemployee, 
    'detailservice' => $detailservice 
]; 

в или попробовать использовать compact

$data = compact('salesorder', 'detailemployee', 'detailservice'); 
+0

привет, он все еще не работает. Когда я использую 'compact', ошибка остается прежней, но когда я использую ваш первый способ, на страницу загрузилось много времени. – rafitio

+0

@rafitio Я удалил '[]' из compact. Отредактировав ответ, повторите попытку. Другой способ загрузки? или его долгое время, а не загрузка также –

+0

@rafitio. Одна вещь, которую я могу предложить в медленности, - сохранить следующий код $ this-> show ($ id) 'code в переменной и использовать этот var для назначения других значений. Таким образом, функция получит выполнение только один раз, а три раза –

0

Вы можете попробовать следующее.

$html = view('summary.invoice', ['salesorder' => $salesorder, 'detailemployee' => $detailemployee, 'detailservice' => $detailservice])->render(); 
$pdf = App::make('dompdf.wrapper'); 
$invPDF = $pdf->loadHTML($html); 
return $pdf->download('invoice.pdf'); 
Смежные вопросы