【问题标题】:How is classes.php written when developing a plugin开发插件的时候classes.php是怎么写的
【发布时间】:2019-01-07 03:34:58
【问题描述】:

我正在 Windows 平台上开发一个十月 CMS 插件,比如 author.pluginname。

文件 storage/framework/classes.php 是用来自动生成我的类的链接的,对吗?

我不确定是否总是这样,我不知道我是否需要或如何强制它发生。这两种情况是:1)我刚刚创建了一个新类,2)我将我的插件同步到另一个测试(linux服务器)。

例如,我刚刚将我的插件复制到新的 10 月 CMS 安装中,但是在使用 plugin:refresh 安装插件后,它没有出现在 classes.php 文件中。

我访问了一个正在使用组件的页面,但我收到了一个找不到类的错误:

"Class 'author\plugin\Models\modelx' not found" on line 653 of /pathtowww/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php

当我 grep 我的作者时,它会找到一些类,但不是全部: grep -i author storage/framework/classes.php

我不得不手动添加它以使其工作,但我认为这不是我们应该做的。那么我应该在 Class 文件中写入什么内容或在 Plugin.php 文件夹中“注册”吗?

请注意,此插件不在 Marketplace 中(显然因为它尚未开发)。

另外,当我使用 Builder 插件创建一个新类时,它确实出现在 classes.php 中。当我用我的文本编辑器创建它时,它通常不会。抱歉,如果这很明显,但我很困惑....!

【问题讨论】:

  • 附注我应该说我已经在我的 Plugin.php 中添加了我的 registerComponents 但没有关于任何模型。我的 register() 是空的... ``` public function registerComponents() { return [ 'author\plugin\Components\SoftwareUser' => 'software_user', ]; } ```
  • 我发现了问题案例 2(将我的软件部署到 Linux)的解决方案:Windows 不区分大小写,所以直到我部署在 Linux 上才发现我的错字。在创建新类(在我的情况下是队列的作业)时,仍然不确定如何(或者如果我需要)重新生成 class.php...
  • storage/framework/classes.php你不需要生成它,它由CMS自己自动生成。如果它没有生成可能是它对storage 文件夹的权限问题,给它适当的write 权限,它将自动生成。
  • 谢谢@HardikSatasiya。权限正确。

标签: laravel octobercms


【解决方案1】:

我已经找到了问题的解决方案,以防万一有人遇到这些问题。

1) 如果使用 Windows + 其他操作系统,请确保文件夹/文件名的大小写正确。 Windows 不区分大小写,因此在您迁移到 Linux / OSX 之前,拼写错误不会导致错误

2) 仅当命名空间与文件的目录结构匹配时,才会自动生成 Classes.php。所以如果你移动文件(或者有错误的命名空间),classes.php 将不会生成,你会得到一个找不到的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2023-03-06
    • 1970-01-01
    • 2012-02-28
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多