【问题标题】: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 注册外观。

      【讨论】:

        【解决方案3】:

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

        1. 为外观设置命名空间:

          使用 Barryvdh\DomPDF\Facade 作为 PDF;

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

          使用 PDF;

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

        【讨论】:

          【解决方案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 中的自动完成功能设置错误。

            【讨论】:

              猜你喜欢
              • 2016-06-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-01-11
              • 1970-01-01
              • 2022-01-04
              • 1970-01-01
              相关资源
              最近更新 更多