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

时间:2016-03-22 19:13:59

标签: cakephp cakephp-3.0 cakephp-3.x

我无法使用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.从插件的doc中尝试了一个非常简单的示例:

$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

我非常感谢有关如何手动安装插件的任何帮助或指导。

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

1 个答案:

答案 0 :(得分:3)

您收到此错误,因为在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。就个人而言,我不会选择第二种解决方案,我只是将其作为替代方案添加,以防万一。