【问题标题】:How does CakePHP 3 build the cakephp-plugins.php file?CakePHP 3 如何构建 cakephp-plugins.php 文件?
【发布时间】:2018-04-20 09:49:10
【问题描述】:

我在安装和配置插件时遇到了一些问题,我想如果我对事情的工作原理有更好的了解,我可能能够弄清楚?!

当我通过 composer 安装 cakemanager/cakephp-settings 插件时,它会在我的供应商文件夹中添加一个带有 3 个子文件夹的“cakemanager”文件夹:“cakephp-settings”、“cakephp-utils”(一个依赖项)和“Settings”。 “cakephp-settings”文件夹本质上是空的,所有插件文件都在“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 文件的正确路径中查找?

【问题讨论】:

  • 您是否安装了composer/installers
  • 是的,并且插件 composer.json 也包含以下内容,我认为这与阅读 readme.md 的作曲家/安装程序有关? - “额外”:{“安装程序名称”:“设置”},
  • 正确,这就是问题的根源。

标签: cakephp plugins composer-php cakephp-3.0


【解决方案1】:

我建议您尝试推动合并this pull request,因为这将解决问题的根源,插件composer.json 中的installer-name 选项将导致目标文件夹如果安装了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,也许可以让他们就@987654333 一起工作@ 选项。

另见

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多