如何在 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.php
和 vendor/composer/autoload_psr4.php
。就我个人而言,我不会选择第二种解决方案,我只是将其添加为备选方案以防万一。
我无法使用 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.php
和 vendor/composer/autoload_psr4.php
。就我个人而言,我不会选择第二种解决方案,我只是将其添加为备选方案以防万一。