Php 无法在laravel 5.1中使用facade调用方法

Php 无法在laravel 5.1中使用facade调用方法,php,dompdf,laravel-5.1,Php,Dompdf,Laravel 5.1,我想从laravel 5.1中的视图生成PDF文件。我正在使用 但是,我得到了以下错误:非静态方法Barryvdh\DomPDF\PDF::loadView()不应该静态调用,假设$this来自不兼容的上下文 $pdf = PDF::loadView('invoices.show_invoice', $data); return $pdf->download('invoice.pdf'); 您很可能刚刚忘记将ServiceProvider和facade行添加到config/app.php

我想从laravel 5.1中的视图生成PDF文件。我正在使用

但是,我得到了以下错误:非静态方法Barryvdh\DomPDF\PDF::loadView()不应该静态调用,假设$this来自不兼容的上下文

$pdf = PDF::loadView('invoices.show_invoice', $data);
return $pdf->download('invoice.pdf');

您很可能刚刚忘记将ServiceProvider和facade行添加到
config/app.php

'Barryvdh\DomPDF\ServiceProvider',

更新composer后,将ServiceProvider添加到提供程序中 config/app.php中的数组

“Barryvdh\DomPDF\ServiceProvider”,您可以选择使用facade 对于较短的代码。将此添加到您的外观:

'PDF'=>'Barryvdh\DomPDF\Facade'


您需要向Laravel注册facade。

发生这种情况是因为您给错误的PDF类命名。 您正在给Barryvdh\DomPDF\PDF命名,并尝试将该类用作“Facade”,这是错误的。 因此,有两种可行的方法来解决您的问题:

  • 将命名空间设置为外观:

    使用Barryvdh\DomPDF\Facade作为PDF

  • 使用别名(仅当您将PDF别名添加到别名部分的app.php中时):

    使用PDF


  • 参考资料:

    使用\在PDF之前,问题已解决

    $pdf = \PDF::loadView('invoices.show_invoice', $data);
    return $pdf->download('invoice.pdf');
    

    在我的例子中,这个问题是由于给错误的PDF类命名而引起的。为了解决这个问题,我将名称空间设置为facade:

    使用Barryvdh\DomPDF\Facade作为PDF

    与之相反:

    使用Barryvdh\DomPDF\PDF

    我的IDE中的自动完成功能设置错误

    $pdf = \PDF::loadView('invoices.show_invoice', $data);
    return $pdf->download('invoice.pdf');