我在安装和配置插件时遇到了一些问题,我想如果我对插件的工作原理有更好的了解,我可能会弄清楚它?!
当我通过composer安装cakemanager/cakefp设置插件时,它会在我的供应商文件夹中添加一个"cakemanger"文件夹,其中包含3个子文件夹:"cakemp-settings"、"cakepp-utils"(依赖项)和"settings"。"cakehp-settings"文件夹基本上是空的,所有插件文件都在"settings"文件夹中。
然而,当我尝试运行迁移时,我遇到了一个错误,即它找不到/vvendor/cakemanager/cakehp-settings/config/bootstrap.php文件——难怪这个文件不存在!在我的应用程序中几乎到处都是相同的错误
在vendor/cakehp-plugins.php文件中,我有这样的文件:
'Settings' => $baseDir . '/vendor/cakemanager/cakephp-settings/',
如果我暂时将其更改为
'Settings' => $baseDir . '/vendor/cakemanager/Settings/',
我可以完成迁移,我的页面看起来又正常了,但当我运行composer dumpautoload时,这种情况会恢复,并导致进一步的问题——我需要一个永久性的解决方案。
如何编辑插件(composer.json文件?),使其正确构建cakehp-plugins.php文件,并查找bootstrap.php文件的正确路径?
我建议您尝试推送合并此拉取请求,因为这将从根本上解决问题,如果安装了composer/installers
,插件composer.json
中的installer-name
选项将导致目标文件夹的名称"不正确"。
没有理由更改文件夹名称,而且从版本3开始,CakePHP不再需要composer/installers
,因此删除该选项应该可以解决问题。
如果你实际上不需要composer/installers
,你也可以尝试删除它。如果这不可能,你也应该能够通过Plugin::load()
调用path
选项指定实际路径来解决这个问题:
Plugin::load('Settings', [
'path' => ROOT . DS . 'vendor' . DS . 'cakemanager' . DS . 'Settings'
]);
还值得向报告该问题https://github.com/cakephp/plugin-installer和/或https://github.com/composer/installers,也许可以让他们一起使用installer-name
选项。
另请参见
- neneneba API>\Cake\Core\Plugin::load()