我最初的控制器代碼Laravel 5.1下載PDF是:與事件事件
try {
$sales = $this->sales->create([
'customer_id' => $customer->id,
'sales_details' => json_encode($vData),
'total_price' => ((int)$data['q-rfh'] * (int)$data['p-rfh']) + ((int)$data['q-rfh-spro'] * (int)$data['p-rfh-spro']),
'created_by' => $user->username,
]);
\Event::fire('print.invoice', $sales);
return \Response::json([
'type' => 'success',
'message' => 'Success creating sales!',
]);
}
catch (\Exception $e) {
return \Response::json([
'type' => 'danger',
'message' => $e->getMessage(),
]);
}
我需要用事件來打印發票,因爲我需要返回與阿賈克斯的響應,讓用戶知道銷售已經成功製作。
的事件代碼是如此簡單:
public function handle(SalesModel $sales) {
if ($sales) {
$data = [
'sales' => $sales,
];
$pdf = \PDF::loadView('invoice.sales', $data);
return $pdf->download('inv_' . Carbon::now() . '.pdf');
}
}
EventServiceProvider已經聽吧:
protected $listen = [
'print.invoice' => [
'App\Events\InvoiceEventHandler',
],
];
一切工作正常,除了PDF沒有下載。我正在使用https://github.com/barryvdh/laravel-dompdf
來創建和下載PDF。有人能告訴我什麼是錯的嗎?
你不能不返回ajax響應和下載pdf在相同的請求,只是這是不可能的。一個請求 - >一個響應。 – manix
也許你可以在成功發送消息後在javascript文件中添加'window.location.href'。 – mul14