我想从laravel 5.1中的视图生成PDF文件。我正在使用https://github.com/barryvdh/laravel-dompdf
但是,我得到以下错误:非静态方法Barryvdh \ DomPDF \ PDF :: loadView()不应该静态调用,假设$ this来自不兼容的上下文
$pdf = PDF::loadView('invoices.show_invoice', $data);
return $pdf->download('invoice.pdf');
发生这种情况是因为您命名了错误的PDF类。你是命名空间Barryvdh \ DomPDF \ PDF并尝试使用这个类作为“门面”是错误的。因此有两种可行的方法可以解决您的问题:
参考:qazxsw poi
您很可能只是忘记将ServiceProvider和Facade行添加到https://github.com/barryvdh/laravel-dompdf/issues/158:
config/app.php
和
'Barryvdh\DomPDF\ServiceProvider',
更新编写器后,将ServiceProvider添加到config / app.php中的providers数组
'Barryvdh \ DomPDF \ ServiceProvider',您可以选择使用Facade来缩短代码。将此添加到您的外墙:
'PDF'=>'Barryvdh \ DomPDF \ Facade',
您需要在Laravel上注册外观。
在PDF之前使用\,问题解决了。
'PDF' => 'Barryvdh\DomPDF\Facade',
在我的情况下,由于命名空间错误的PDF类,问题出现了问题。为了解决这个问题,我将命名空间设置为Facade:
$pdf = \PDF::loadView('invoices.show_invoice', $data);
return $pdf->download('invoice.pdf');
而不是:
use Barryvdh\DomPDF\Facade as PDF;
由我的IDE中的自动完成功能错误地设置。