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

问题描述 投票:1回答:5

我想从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
5个回答
3
投票

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

  1. 将名称空间设置为外观: 使用Barryvdh \ DomPDF \ Facade作为PDF;
  2. 使用别名(仅当您在别名部分的app.php中添加PDF别名时): 使用PDF;

参考:qazxsw poi


2
投票

您很可能只是忘记将ServiceProvider和Facade行添加到https://github.com/barryvdh/laravel-dompdf/issues/158

config/app.php

'Barryvdh\DomPDF\ServiceProvider',

1
投票

更新编写器后,将ServiceProvider添加到config / app.php中的providers数组

'Barryvdh \ DomPDF \ ServiceProvider',您可以选择使用Facade来缩短代码。将此添加到您的外墙:

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

您需要在Laravel上注册外观。


0
投票

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

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

0
投票

在我的情况下,由于命名空间错误的PDF类,问题出现了问题。为了解决这个问题,我将命名空间设置为Facade:

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

而不是:

use Barryvdh\DomPDF\Facade as PDF;

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

© www.soinside.com 2019 - 2024. All rights reserved.