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

时间:2015-08-04 13:11:32

标签: php dompdf laravel-5.1

我想从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');

5 个答案:

答案 0 :(得分:3)

这是因为您命名了错误的PDF类。 你是命名空间Barryvdh \ DomPDF \ PDF并尝试使用这个类作为“门面”是错误的。 因此,有两种可行的方法可以解决您的问题:

  1. 将名称空间设置为外观:

    将Barryvdh \ DomPDF \ Facade用作PDF;

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

    使用PDF;

  3. 参考:https://github.com/barryvdh/laravel-dompdf/issues/158

答案 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中由自动完成功能设置错误。