我正在查看/administrator/components/com_contact/views/contacts/view的第34行.html.php其中说$this->items = $this->get('Items');
我不明白的是,这实际上是如何在/administrator/components/com_contact/models/contacts的第123行调用protected function getListQuery()
.php
还有一些其他的事情我不明白是如何工作的......喜欢
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
这些召唤是什么?我查看了"get(("的文档,但它没有说明这些实际上在调用什么,因为我没有看到任何称为getPagination,getState或getItems的方法...看起来get('Items'(以某种方式神奇地调用getListQuery((。
我假设这里有 1.7/2.5+...
在乔姆拉!s MVC视图contacts
(ContactViewContacts
extends JView
(自动加载模型contacts
(或在J! 术语ContactModelContacts
(作为类extends JModelList
。
get()
在视图中查看,以从已注册的模型或视图的属性中获取数据。
所以;
$this->items = $this->get('Items');
实际上是对模型ContactModelContacts
的调用,该模型parent
中具有匹配的getItems()
。
模型文件com_contact/models/contacts.php
没有实现它自己的getItems()
,所以使用JModelList
类中的getItems()
(在/libraries/joomla/application/component/modellist.php
中找到(。
这反过来又需要getListQuery()
——没有魔法,只有继承。
$this->get('Pagination')
正在做同样的事情,即访问模型父级中的实现。
$this->get('State')
可能一直追溯到JModel
实现。