我正在查看/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/

10-13 02:26