barryvdh/laravel-dompdf 呈现空白网页
barryvdh/laravel-dompdf renders blank web page
我正在从 Laravel 7 升级到 8,并想切换到 barryvdh/laravel-dompdf
以生成 PDF。到目前为止,我一直在使用 niklasravnsborg/laravel-pdf
,但由于该软件包不支持 Laravel 8,因此我需要切换。所以我正在修改现有代码以使用 barryvdh/laravel-dompdf
,但我 运行 遇到了问题。
这是我的(简化版)控制器:
public function update(Request $request) {
$invoice = Invoice::find($request->invoice_id);
if(isset($request->export) AND $request->export == 1) {
$this->exportInvoice($invoice, $request);
}
}
此 exportInvoice
函数在同一个控制器文件中。
我正在使用它来生成测试 PDF:
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();
现在我已经设法将问题缩小到我的代码中 PDF 生成失败的地方。
如果我将 PDF 生成代码放在上面更新函数的 if
语句中,那么我会得到预期的结果:一个简单的 PDF 文件。
但是,一旦我将这段代码移至 exportInvoice
函数,我就会得到一个简单的空白网页。
我一直在谷歌搜索,但找不到类似的问题。
我已经尝试将我的所有代码放在 update
函数中并猜猜是什么......这按预期工作。就好像我在子功能上做错了什么,但我不知道是什么。
有人看到我做错了什么吗?
通过您的 update()
方法,这会将 PDF 流式传输回浏览器:
return $pdf->stream();
但是从 exportInvoice()
调用的 update()
方法,这只会 return 流返回到 update()
方法。如果你不在那里做任何事情,它就不会到达浏览器。您需要 return 来自 exportInvoice()
的响应 return。
public function update(Request $request) {
$invoice = Invoice::find($request->invoice_id);
if(isset($request->export) AND $request->export == 1) {
// Note we need to *return* the response to the browser
return $this->exportInvoice($invoice, $request);
}
}
public function exportInvoice($invoice, $request) {
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();
}
我正在从 Laravel 7 升级到 8,并想切换到 barryvdh/laravel-dompdf
以生成 PDF。到目前为止,我一直在使用 niklasravnsborg/laravel-pdf
,但由于该软件包不支持 Laravel 8,因此我需要切换。所以我正在修改现有代码以使用 barryvdh/laravel-dompdf
,但我 运行 遇到了问题。
这是我的(简化版)控制器:
public function update(Request $request) {
$invoice = Invoice::find($request->invoice_id);
if(isset($request->export) AND $request->export == 1) {
$this->exportInvoice($invoice, $request);
}
}
此 exportInvoice
函数在同一个控制器文件中。
我正在使用它来生成测试 PDF:
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();
现在我已经设法将问题缩小到我的代码中 PDF 生成失败的地方。
如果我将 PDF 生成代码放在上面更新函数的 if
语句中,那么我会得到预期的结果:一个简单的 PDF 文件。
但是,一旦我将这段代码移至 exportInvoice
函数,我就会得到一个简单的空白网页。
我一直在谷歌搜索,但找不到类似的问题。
我已经尝试将我的所有代码放在 update
函数中并猜猜是什么......这按预期工作。就好像我在子功能上做错了什么,但我不知道是什么。
有人看到我做错了什么吗?
通过您的 update()
方法,这会将 PDF 流式传输回浏览器:
return $pdf->stream();
但是从 exportInvoice()
调用的 update()
方法,这只会 return 流返回到 update()
方法。如果你不在那里做任何事情,它就不会到达浏览器。您需要 return 来自 exportInvoice()
的响应 return。
public function update(Request $request) {
$invoice = Invoice::find($request->invoice_id);
if(isset($request->export) AND $request->export == 1) {
// Note we need to *return* the response to the browser
return $this->exportInvoice($invoice, $request);
}
}
public function exportInvoice($invoice, $request) {
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();
}