【问题标题】:laravel 5.4: PHP Fatal error: Call to undefined method Illuminate\Foundation\Application::configure()laravel 5.4:PHP 致命错误:调用未定义的方法 Illuminate\Foundation\Application::configure()
【发布时间】:2017-08-24 17:33:22
【问题描述】:

我是 laravel 的新手。我正在尝试使用来自 barryvdh 的 Snappy PDF。我已经按照https://github.com/barryvdh/laravel-snappy 的说明安装了 snappy pdf。但是当我运行php artisan serve 命令时,会显示以下错误

PHP 致命错误:在第 21 行调用 F:\xampp\htdocs\Laravel\doctorApp\vendor\barryvdh\laravel-snappy\src\LumenServiceProvider.php 中未定义的方法 Illuminate\Foundation\Application::configure()

这是我的 LumenServiceProvider.php 中的那一行:

public function register()
{
   $this->app->configure('snappy'); // line 21

   $configPath = __DIR__ . '/../config/snappy.php';
   $this->mergeConfigFrom($configPath, 'snappy');
}

我已经使用这个安装了 wkhtmltopdf:

$ composer require h4cc/wkhtmltopdf-amd64 0.12.x
$ composer require h4cc/wkhtmltoimage-amd64 0.12.x

在 config/app.php 中,我在提供程序和别名中添加了以下行:

在提供者中:Barryvdh\Snappy\ServiceProvider::class,

在别名中:

'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,

我的配置文件 (config/snappy.php) 中二进制文件的路径:pdf 的第一个..

'binary' => base_path('vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64'),

图片的第二个...

'binary' => base_path('vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64'),

我的引导程序/app.php:

<?php

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

/*snappy pdf start--- i added this part*/
class_alias('Barryvdh\Snappy\Facades\SnappyPdf', 'PDF');
$app->register(Barryvdh\Snappy\LumenServiceProvider::class);

//Optionally, add the facades like so:

class_alias(Barryvdh\Snappy\Facades\SnappyPdf::class, 'PDF');
class_alias(Barryvdh\Snappy\Facades\SnappyImage::class, 'SnappyImage');

/*snappy pdf end*/


$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);


return $app;

在我的控制器中我添加了:

use Barryvdh\Snappy\Facades as PDF;

这是我的控制器:

public function PdfView(Request $request, $patient_id)
{
   $patients = Patient::where('id', $patient_id)->first();
   $pdf = PDF::loadView('pdfview', ['patients'=>$patients]);
   return $pdf->download('pdfview.pdf');

}

有人可以说一下,为什么会出现这个错误以及如何解决这个问题?

【问题讨论】:

  • 我没有使用configure 开头,默认情况下在 LumenServiceProvider.php 中。
  • 我没有使用 configure 开头,默认情况下在 LumenServiceProvider.php 中。

标签: php laravel laravel-5 laravel-5.4


【解决方案1】:

如果你使用 Laravel,你不应该使用 LumenServiceProvider,但是:

Barryvdh\Snappy\ServiceProvider::class,

如包装文档中所述

编辑

好的,我看到问题是不同的再次阅读它。您添加了:

class_alias('Barryvdh\Snappy\Facades\SnappyPdf', 'PDF');
$app->register(Barryvdh\Snappy\LumenServiceProvider::class);

//Optionally, add the facades like so:

class_alias(Barryvdh\Snappy\Facades\SnappyPdf::class, 'PDF');
class_alias(Barryvdh\Snappy\Facades\SnappyImage::class, 'SnappyImage');

进入bootstrap/app.php,但你不应该这样做。这仅适用于 Lumen,不适用于 Laravel

【讨论】:

  • 我不明白你在说什么。当我为 snappy 更新作曲家时,默认情况下 LumenServiceProvider 就在那里。你能解释一下你刚才说的吗@Marcin
  • 谢谢 :) @Marcin。还有一件事,我应该在我的控制器中为$pdf = PDF::loadView('pdfview', ['patients'=&gt;$patients]); 使用什么。因为我在控制器中使用了use Barryvdh\Snappy\Facades as PDF;,但它给了我 FatalErrorException Barryvdh\Snappy\Facades not found.And 如果不使用use Barryvdh\Snappy\Facades as PDF; 它给我 FatalErrorException Class 'App\Http\Controllers\PDF' not found。请帮忙...
  • @NazemMahmud 在你的控制器中添加use \PDF;就足够了
猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2017-02-19
  • 2016-04-21
  • 2015-09-23
  • 2014-04-17
  • 2023-04-01
  • 2018-07-04
相关资源
最近更新 更多