How to solve this error: Joomla\CMS\Form\Form::getInstance() could not load file

How to solve this error: Joomla\CMS\Form\Form::getInstance() could not load file

我正在开发一个 Joomla 组件,我遇到了一个问题,我完全不知道这是怎么发生的,为什么会发生,也不知道如何解决。

我有两个视图显示来自两个不同数据库 table 的列表。一种叫做'projects',一种叫做'fields'。项目视图有效,字段视图无效。字段视图中的代码是从项目视图中复制的,文件(控制器、模型、视图、form.xml、table)的所有代码都是相同的,除了名称 table名称and/or 字段名.

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

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

它无法加载(或)表单。

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

如果我加载 edit/new 视图(字段),所有 works/shows 都是正确的,所以 form.xml 不是 incorrect/corrupt。

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

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

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

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

中找到源代码