【发布时间】:2015-09-07 12:41:27
【问题描述】:
我的 Event 初始控制器代码是:
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(),
]);
}
我需要使用事件打印发票,因为我需要使用 ajax 返回响应以让用户知道销售已经成功。
事件代码就这么简单:
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,只是不可能。一个请求 -> 一个响应。
-
也许您可以在发送成功消息后在您的javascript文件中添加
window.location.href。
标签: php events pdf laravel-5.1