Поэтому я пытаюсь реализовать экспорт в PDF. Я установил dompdf с помощью composer, я поставил «PDF» => Barryvdh \ DomPDF \ Facade :: class »в псевдонимах и« Barryvdh \ DomPDF \ ServiceProvider :: class »в провайдерах в config / app.php. На моем маршруте у меня есть этот код:
\Illuminate\Support\Facades\Route::get('/users/{userId}/details/{forReport}/exportPDF', function($userId) {
$user = UserHelper::getUser($userId);
$internal_devices = UserHelper::getUsersAssignedInternalDevices($userId);
$external_devices = UserHelper::getUsersAssignedExternalDevices($userId);
$licenses = UserHelper::getUsersAssignedLicenses($userId);
$delegation_devices = UserHelper::getUsersDevicesOnDelegation($userId);
$pdf = PDF::loadView(URLHelper::userReportView(),
[
'user' => $user,
'internal_devices' => $internal_devices,
'external_devices' => $external_devices,
'licenses' => $licenses,
'delegation_devices' => $delegation_devices,
]);
return $pdf->download('My.pdf');
})->name('admin.exportPDF');
Когда я вызываю этот маршрут, я получаю тайм-аут выполнения, и у меня есть 300 секунд. В заключение, PDF не генерируется. Что-то не так с моим кодом?
PS: я сделал var_damp и все выглядит хорошо
Для этого вам нужно создать функцию контроллера, поэтому не стоит создавать функции в web.php.
Вы можете попробовать использовать ответ () -> скачать метод. Здесь вы можете найти больше информации о всех типах ответов
Попробуйте сделать это:
\Illuminate\Support\Facades\Route::get('/users/{userId}/details/{forReport}/exportPDF', function($userId) {
$user = UserHelper::getUser($userId);
$internal_devices = UserHelper::getUsersAssignedInternalDevices($userId);
$external_devices = UserHelper::getUsersAssignedExternalDevices($userId);
$licenses = UserHelper::getUsersAssignedLicenses($userId);
$delegation_devices = UserHelper::getUsersDevicesOnDelegation($userId);
$pdf = PDF::loadView(URLHelper::userReportView(),
[
'user' => $user,
'internal_devices' => $internal_devices,
'external_devices' => $external_devices,
'licenses' => $licenses,
'delegation_devices' => $delegation_devices,
]);
$headers = [
'Content-Type' => 'application/pdf',
];
return response()->download($pdf, 'filename.pdf', $headers);
})->name('admin.exportPDF');
Других решений пока нет …