我正在查看/administrator/components/com_contact/views/contacts/view.html.php的第34行,哪里说$this->items = $this->get('Items');
我不明白的是,它实际上是如何在/administrator/components/的第123行上调用protected function getListQuery()
的com_contact/models/contacts.php
还有其他一些我不理解的工作方式...
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
这些叫什么?我查看了有关“get()”的文档,但没有说明它们实际调用的是什么,因为我看不到任何名为getPagination,getState或getItems的方法。神奇地调用getListQuery()。
最佳答案
我在这里假设1.7 /2.5 + ...
在Joomla!的MVC中, View contacts
(ContactViewContacts
,其中extends JView
)自动加载模型contacts
(或在J!术语ContactModelContacts
中),该模型作为extends JModelList
类。get()
在 View 中查找以从注册的模型或 View 的属性中获取数据。
所以;
$this->items = $this->get('Items');
实际上是对
ContactModelContacts
模型的调用,该模型的getItems()
中具有匹配的parent
。模型文件
com_contact/models/contacts.php
并没有实现它自己的getItems()
,因此使用了getItems()
类中的JModelList
(在/libraries/joomla/application/component/modellist.php
中找到)。反过来,这称为
getListQuery()
-仅继承就没有魔术。$this->get('Pagination')
在做同样的事情,即。在模型父级中访问实现。$this->get('State')
可能一直追溯到JModel
实现。关于php - Joomla get ('Items')及其工作方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9573570/