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

问题描述

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

我有两个视图显示来自两个不同数据库表的列表。一种称为“项目”,一种称为“领域”。项目视图有效,而字段视图无效。字段视图中的代码是从项目视图中复制的,并且文件(控制器、模型、视图、form.xml、表)的所有代码都是相同的,除了名称、表名和/或字段名。

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

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

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

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

如果我加载编辑/新视图(字段),一切正常/显示正确,因此 form.xml 不正确/损坏。

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

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

标签: formsjoomla3.0

解决方案


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

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


推荐阅读