Невозможно вызвать метод, используя фасад в laravel 5.1

1

Я хочу сгенерировать PDF файл из представления в laravel 5.1. Я использую https://github.com/barryvdh/laravel-dompdf

Но, Im получает следующую ошибку: Нестатический метод Barryvdh\DomPDF\PDF :: loadView() не следует вызывать статически, предполагая $ this из несовместимого контекста

$pdf = PDF::loadView('invoices.show_invoice', $data);
return $pdf->download('invoice.pdf');
Теги:
laravel-5.1
dompdf

5 ответов

2

Это происходит из-за того, что вы присваиваете имена неправильному классу PDF. Вы используете namespacing Barryvdh\DomPDF\PDF и пытаетесь использовать этот класс как "Фасад", что неверно. Таким образом, есть два возможных пути решения вашей проблемы:

  1. Установка пространства имен для фасада:

    использовать Barryvdh\DomPDF\Facade в формате PDF;

  2. Использование псевдонима (только если вы добавите псевдоним PDF в app.php в разделе псевдонима):

    использование PDF;

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

2

Вы, скорее всего, просто забыли добавить ServiceProvider и фасадные строки в config/app.php:

'Barryvdh\DomPDF\ServiceProvider',

а также

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

После обновления композитора добавьте ServiceProvider в массив поставщиков в config/app.php

"Barryvdh\DomPDF\ServiceProvider", вы можете дополнительно использовать фасад для более короткого кода. Добавьте это к своим фасадам:

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

Вам нужно будет зарегистрировать фасад с помощью Laravel.

0

В моем случае проблема возникла из-за неправильного пространства имен в классе PDF. Чтобы решить проблему, я установил пространство имен для фасада:

use Barryvdh\DomPDF\Facade as PDF;

в отличие от:

use Barryvdh\DomPDF\PDF;

неправильно установлена функция автозаполнения из моей IDE.

0

использовать\перед PDF, проблема решена.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню