【问题标题】:Unable to call method using facade in laravel 5.1无法在 laravel 5.1 中使用外观调用方法
【发布时间】:2015-10-26 22:01:42
【问题描述】:
我想从 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');
【问题讨论】:
标签:
php
dompdf
laravel-5.1
【解决方案1】:
您很可能只是忘记将 ServiceProvider 和外观行添加到您的 config/app.php:
'Barryvdh\DomPDF\ServiceProvider',
和
'PDF' => 'Barryvdh\DomPDF\Facade',
【解决方案2】:
更新 composer 后,将 ServiceProvider 添加到 providers
config/app.php 中的数组
'Barryvdh\DomPDF\ServiceProvider', 可以选择使用外观
用于更短的代码。将此添加到您的外墙:
'PDF' => 'Barryvdh\DomPDF\Facade',
你需要用 Laravel 注册外观。
【解决方案4】:
在 PDF 前使用 \,问题已解决。
$pdf = \PDF::loadView('invoices.show_invoice', $data);
return $pdf->download('invoice.pdf');
【解决方案5】:
在我的情况下,由于命名空间错误的 PDF 类而导致问题上升。为了解决这个问题,我将命名空间设置为门面:
use Barryvdh\DomPDF\Facade as PDF;
相对于:
use Barryvdh\DomPDF\PDF;
我的 IDE 中的自动完成功能设置错误。