我想从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');
答案 0 :(得分:3)
这是因为您命名了错误的PDF类。 你是命名空间Barryvdh \ DomPDF \ PDF并尝试使用这个类作为“门面”是错误的。 因此,有两种可行的方法可以解决您的问题:
将名称空间设置为外观:
将Barryvdh \ DomPDF \ Facade用作PDF;
使用别名(仅当您在别名部分的app.php中添加PDF别名时):
使用PDF;
答案 1 :(得分:2)
您很可能忘记将ServiceProvider和Facade行添加到config/app.php
:
'Barryvdh\DomPDF\ServiceProvider',
和
'PDF' => 'Barryvdh\DomPDF\Facade',
答案 2 :(得分:1)
更新作曲家后,将ServiceProvider添加到提供者 config / app.php中的数组
'Barryvdh \ DomPDF \ ServiceProvider',您可以选择使用外观 更短的代码。将其添加到您的外墙:
'PDF'=> 'Barryvdh \ DOMPDF \门面',
您需要使用Laravel注册外观。
答案 3 :(得分:0)
在PDF之前使用\,问题解决了。
pdf("all.pdf")
MyPlots
dev.off()
答案 4 :(得分:0)
在我的情况下,由于命名错误的PDF类而导致问题上升。为了解决这个问题,我将命名空间设置为外观:
use Barryvdh\DomPDF\Facade as PDF;
相对于:
use Barryvdh\DomPDF\PDF;
在我的IDE中由自动完成功能设置错误。