我正在开发一个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 中找到源代码。