由于公司防火墙,我无法使用作曲家来处理我的依赖项。目前,我正在尝试为Laravel使用Barry vd Heuvel的DomPDF包装器,并尝试:
- 从 Github 下载压缩文件 (主(
- 更新了
composer.json
(不确定是否需要,但还是做了(并在require
容器中添加了"barryvdh/laravel-dompdf": "*"
。 - 创建文件夹结构:
vendor/barryvdh/laravel-dompdf
- 将包中的所有文件放在那里(
config
文件夹,src
文件夹和文件.gitignore
,composer.json
和readme.md
( - 在我的
app.php
中添加服务提供商和外观。服务提供商列为BarryvdhDomPDFServiceProvider::class
,外观别名类似于'PDF' => BarryvdhDomPDFFacade::class
- 冉
composer dump-autoload
刷新浏览器后,我Class 'BarryvdhDomPDFServiceProvider' not found
.我也尝试运行php artisan cache:clear
并php artisan dump-autoload
但最后一个失败了,因为它找不到BarryvdhDomPDFServiceProvider
。
我忘记了做什么才能让它工作?
更新我已经尝试了Wouter J的建议答案,composer.json现在看起来像:
..
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\": "app/",
"Barryvdh\DomPDF\": "vendor/barryvdh/laravel-dompdf/src"
},
..
我已经验证了作曲家转储自动加载是否有任何影响,但我认为它有。因为该条目现在也列在vendor/composer/autoload_psr4.php
中,如下所示:
return array(
// more entries
'Barryvdh\DomPDF\' => array($vendorDir . '/barryvdh/laravel-dompdf/src'),
'App\' => array($baseDir . '/app'),
);
我相信在这一点上这是有效的,但立面没有回应。当我尝试调用类似 PDF::loadView(...)
的东西并且我让 PhpStorm 导入类 ( vendor/barryvdh/laravel-dompdf/src/PDF.php
( 时,它会抛出一个错误,我无法静态调用方法 loadView。根据文档,我应该可以这样称呼它:
$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');
但这导致我Non-static method BarryvdhDomPDFPDF::loadView() should not be called statically, assuming $this from incompatible context
。
建议?
作曲家自动加载仍然不知道如何下载软件包。您必须像这样配置自动加载:
{
"autoload": {
"psr-4": { "Namespace\Of\The\Package\": "vendor/the/package" }
}
}
我知道这个问题很旧,但由于我没有看到任何解决方案,这是我的:我遇到了完全相同的问题。能够通过在我的本地主机上运行composer dumpautoload
来解决,然后将文件夹"供应商/作曲家"复制到共享主机而无需 SSH 访问权限。希望这对处于类似情况的人有所帮助。
该问题解决了应用程序不知道DomPDFServiceProvidor
或与DomPDF
相关的任何内容barryvdh/laravel-dompdf
因为本身取决于仍然缺少且不附带dpmpdf/dompdf
包barryvdh/laravel-dompdf
包dompdf/dompdf
还取决于几个扩展,即
PHP version 5.3.0 or higher
DOM extension
GD extension
MBString extension
php-font-lib
php-svg-lib
在这里查看软件包 https://packagist.org/packages/dompdf/dompdf 下载此软件包并放入您的供应商目录,然后更新您的composer dumpautoload
它应该可以正常工作