如何在 CakePHP 3 中手动安装插件?

How to install a plugin manually in CakePHP 3?

我无法使用 Composer,因此必须手动安装 CakePDF plugin,但以下官方 CakePHP 文档中的示例似乎不起作用。

所以这是我遵循的安装流程:

1.) 将插件复制到 app/plugins/CakePdf

2.) 更新了应用程序的 composer.json 文件,如下所示:

"autoload": {
    "psr-4": {
            "CakePdf\": "./plugins/CakePdf/src",
            "CakePdf\Test\": "./plugins/CakePdf/tests"
    }
},
"autoload-dev": {
    "psr-4": {
        "App\Test\": "tests",
        "Cake\Test\": "./vendor/cakephp/cakephp/tests"
        "CakePdf\": "./plugins/CakePdf/src",
        "CakePdf\Test\": "./plugins/CakePdf/tests"
    }
}

3.) 在 bootstrap.php:

加载插件
Plugin::load('CakePdf', ['bootstrap' => true, 'routes' => true, 'autoload' => true]);

4.) 添加路由器扩展:

Router::extensions(['pdf']);

5.) 从插件的文档中尝试了一个非常简单的示例:

$cakePdf = new CakePdf(array(
    'engine' => 'CakePdf.DomPdf',
    'pageSize' => 'A4',
    'orientation' => 'portrait'
)); 

$html = '<html><head><body><p>Pdftest</p></body></head></html>';

$rawPdf = $CakePdf->output($html);

但是代码在第一行中断并提供以下错误消息:

Class 'App\Controller\CakePdf' not found

对于如何手动安装插件的任何帮助或指导,我将不胜感激。

如果有任何其他信息需要我提供,尽管询问。

您收到此错误是因为在 vendor/composer/ 中您可以看到一些 autoload_*.php 文件。这些文件包含加载 类 的路径。我认为没有人可以安全地告诉您要更新什么以及这些文件的位置。

所以你有两个解决方案:

1 - 在本地机器上复制 composer.json 和 运行 composer update。然后移动在您的应用程序中创建的文件。我建议之前进行备份。您最有可能需要移动的东西是:

 vendor/
 composer.json
 composer.lock

2 - 开始使用插件的路径更新 vendor/composer/autoload_*.php 中的文件。您很可能只需要更新以下两个文件:

vendor/cakephp-plugins.phpvendor/composer/autoload_psr4.php。就我个人而言,我不会选择第二种解决方案,我只是将其添加为备选方案以防万一。