【问题标题】:Joomla get('Items') and how it worksJoomla get('Items') 及其工作原理
【发布时间】:2012-03-23 08:00:15
【问题描述】:

我正在查看 /administrator/components/com_contact/views/contacts/view.html.php 的第 34 行,其中写着 $this->items = $this->get('Items'); 我不明白这实际上是如何在网上调用 protected function getListQuery() 123 /administrator/components/com_contact/models/contacts.php

还有其他一些我不明白的工作方式......比如

$this->pagination   = $this->get('Pagination');
$this->state        = $this->get('State');

这些叫什么?我查看了“get()”的文档,但它没有说明这些实际调用的是什么,因为我没有看到任何名为 getPagination、getState 或 getItems 的方法......似乎 get('Items') 不知何故神奇地调用 getListQuery()。

【问题讨论】:

    标签: php html joomla content-management-system


    【解决方案1】:

    我在这里假设 1.7/2.5+...

    在 Joomla! 的 MVC 中,视图 contactsContactViewContacts which 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 实现。

    【讨论】:

    • 伙计,我觉得自己像个白痴……这太有道理了。我想我只是从未见过调用继承方法然后调用子类方法。我想我输入正确。无论哪种方式 - 谢谢!
    • Joomla 组件开发者教程是造成这种混乱的原因。我浪费了很多时间在这个烂摊子上徘徊(我想这会是这样,但在教程中它在 1.5 或 2.5 中不存在)。非常感谢您的回答。
    • 我想补充一点,如果包括 Ruwantha 在内的任何人对任何 Joomla 文档不满意,您可以为改进它做出贡献。 Joomla 是一个全志愿者项目,它需要每个人的帮助才能使它变得更好。
    • 一个快速的问题。我们是否也有 set() 方法,就像 get() 一样?
    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2020-07-16
    • 2011-11-08
    相关资源
    最近更新 更多