我正在研究一个Joomla组件,我遇到了一个完全不知道如何以及为什么会发生这个问题以及如何解决它的问题。
我有两个视图显示来自两个不同数据库表的列表。一个称为“项目”,一个称为“字段”。项目视图正在运行,而字段视图则不然。字段视图中的代码是从项目视图中复制的,文件的所有代码(控制器,模型,视图,form.xml,表)都是相同的,除了名称,表名和/或字段名。
在字段视图中发生此错误时会发生错误:
$this->filterForm = $this->get('FilterForm');
不知何故,它无法加载(或)表单。
如果我注释掉default.php
中过滤元素所在的行和部分,它可以工作但没有过滤器选项。
如果我加载编辑/新视图(字段),一切正常/显示正确,因此form.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中找到源代码。