CakePHP 3如何构建cakephp-plugins.php文件?

时间:2017-11-07 20:58:16

标签: cakephp plugins composer-php cakephp-3.0

我在安装和配置插件时遇到了一些问题,我想如果我对事情的运作方式有了更好的了解,我可能会想出来吗?!

当我通过composer安装cakemanager/cakephp-settings插件时,它会在我的供应商文件夹中添加一个' cakemanager'包含3个子文件夹的文件夹:' cakephp-settings',' cakephp-utils' (依赖)和'设置'。 ' cakephp-settings'文件夹基本上是空的,所有插件文件都在“设置”中。文件夹中。

然而,当我尝试运行迁移时,我收到一个错误,它无法找到/vendor/cakemanager/cakephp-settings/config/bootstrap.php文件 - 这不奇怪,因为这个文件不存在!在我的应用程序中随处可见相同的错误

在vendor / cakephp-plugins.php文件中,我有:

'Settings' => $baseDir . '/vendor/cakemanager/cakephp-settings/',

如果我暂时将其更改为

'Settings' => $baseDir . '/vendor/cakemanager/Settings/',

我可以完成迁移并且我的页面再次显示正常,但是当我运行composer dumpautoload并导致进一步的问题时,这会恢复正常 - 我需要一个永久的解决方案。

如何编辑插件(composer.json文件?)以便正确构建cakephp-plugins.php文件并查找bootstrap.php文件的正确路径?

1 个答案:

答案 0 :(得分:0)

我建议您尝试推送合并 this pull request ,因为这会解决问题的根源,插件installer-name中的composer.json选项将导致目标文件夹在安装composer/installers的情况下被“错误地”命名。

没有理由更改文件夹名称,从版本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选项。

另见