如何解决此错误:Joomla\CMS\Form\Form::getInstance() 无法加载文件



我正在开发一个Joomla组件,我遇到了一个问题,完全不知道如何以及为什么会发生这种情况以及如何解决它。

我有两个视图显示来自两个不同数据库表的列表。一个称为"项目",一个称为"领域"。项目视图正常工作,字段视图无效。字段视图中的代码是从项目视图复制的,文件(控制器、模型、视图、窗体.xml、表)的所有代码都相同,但名称、表名和/或字段名除外。

在字段视图中触发此代码时,会发生此错误:

$this->filterForm = $this->get('FilterForm');

不知何故,它无法加载(或)表单。

如果我注释掉过滤器元件所在的行和default.php部分,它可以工作但没有过滤器选项。

如果我加载编辑/新视图(字段),一切都可以正常工作/显示,因此表单.xml不会不正确/损坏。

我一直在翻阅库文件,但找不到表单和代码。

不知何故(但这与这个问题无关)我找不到声明 JViewLegacy 类的文件。

Joomla 将在 models/forms/filter_xxx.xml 中查找过滤器表单的 xml 定义(例如 filter_fields.xml, filter_projects.xml)。你那里有两个 xml 文件吗?

Joomla团队最近(我认为是v3.8开始)更改了很多他们的类名。您可以在 libraries/classmap.php 中找到从旧到新的匹配项,他们在其中设置了从旧到新的别名。JViewLegacy 的新名称是命名空间 Joomla\CMS\MVC\View 中的 HtmlView,您可以在 libraries/src/MVC/View 中找到源代码。

最新更新