手动将软件包附加到Laravel(由于防火墙而无法使用作曲家)


Manually attach package to Laravel (unable to use composer due to firewall)

由于公司防火墙,我无法使用作曲家来处理我的依赖项。目前,我正在尝试为Laravel使用Barry vd Heuvel的DomPDF包装器,并尝试:

  1. 从 Github 下载压缩文件 (主(
  2. 更新了composer.json(不确定是否需要,但还是做了(并在require容器中添加了"barryvdh/laravel-dompdf": "*"
  3. 创建文件夹结构:vendor/barryvdh/laravel-dompdf
  4. 将包中的所有文件放在那里(config文件夹,src文件夹和文件.gitignorecomposer.jsonreadme.md(
  5. 在我的app.php中添加服务提供商和外观。服务提供商列为Barryvdh'DomPDF'ServiceProvider::class,外观别名类似于'PDF' => Barryvdh'DomPDF'Facade::class
  6. composer dump-autoload

刷新浏览器后,我Class 'Barryvdh'DomPDF'ServiceProvider' not found.我也尝试运行php artisan cache:clearphp artisan dump-autoload但最后一个失败了,因为它找不到Barryvdh'DomPDF'ServiceProvider

我忘记了做什么才能让它工作?

更新我已经尝试了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 Barryvdh'DomPDF'PDF::loadView() should not be called statically, assuming $this from incompatible context

建议?

作曲家自动加载仍然不知道如何下载软件包。您必须像这样配置自动加载:

{
    "autoload": {
        "psr-4": { "Namespace''Of''The''Package''": "vendor/the/package" }
    }
}

我知道这个问题很旧,但由于我没有看到任何解决方案,这是我的:我遇到了完全相同的问题。能够通过在我的本地主机上运行composer dumpautoload来解决,然后将文件夹"供应商/作曲家"复制到共享主机而无需 SSH 访问权限。希望这对处于类似情况的人有所帮助。

该问题解决了应用程序不知道DomPDF'ServiceProvidor或与DomPDF相关的任何内容barryvdh/laravel-dompdf因为本身取决于仍然缺少且不附带dpmpdf/dompdfbarryvdh/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它应该可以正常工作