Joomla模型类型有什么区别?

时间:2014-02-11 14:23:45

标签: php model-view-controller joomla model joomla3.0

我正试图掌握Joomla(3.x)框架背后的力量。

我注意到组件中有multiple types of model that can be used


JModelAdmin

原型管理模型。充当应用程序特定对象的Factory类,并提供许多支持API函数。

JModelLegacy

Joomla模型的基类 充当应用程序特定对象的Factory类,并提供许多支持API函数。

JModelList

用于处理项目列表的模型类。 充当应用程序特定对象的Factory类,并提供许多支持API函数。

JModelForm

原型表单模型。 充当应用程序特定对象的Factory类,并提供许多支持API函数。

JModelItem

原型项目模型。


我知道JModelLegacy似乎是基础课。我的模型默认扩展JModelLegacy,但是,我想知道我是否可以使用其他类的好处。

如果有人知道这些模型,我将非常感谢您解释这些模型类之间的差异,以及您将使用其他模型的预期方案。

1 个答案:

答案 0 :(得分:27)

首先,所有类都可用于代码研究:

\libraries\legacy\model\

Classes

同样重要的是要理解这些类应该与相应的控制器一起使用(一般来说): JControllerLegacyJControllerFormJControllerAdmin

JModelLegacy - 是Joomla模型的基类(模型与MVC一样)。它基本上可以通过初始化数据库驱动程序对象和表对象作为Factory类。

如果您只想进行一些基本的SQL查询(使用JDatabase进行任何工作)并编写其他业务逻辑,则可能需要扩展此类。

所有型号都会延长JModelLegacy


JModelList - 是一个用于处理项目列表的类。它提供分页和过滤。基本上,只要您显示项目列表,就可以使用JModelList。所有核心组件都依赖于JModelList

JModelLegacy example


JModelForm JModelAdmin 通常与表单相关联。表格可以是用户注册表格,也可以是创建和编辑记录。 Joomla中的表单在XML文件中定义。 JModelForm将加载这些文件作为JForm对象,将加载表单数据,预处理表单并验证它。

这是您可以使用的最强大的类之一。他们将做繁重的工作。如果您不喜欢特定的行为,可以通过实现自己的代码来覆盖它。

JModelAdmin为表单添加了一些额外的管理功能:

  • 对记录执行批处理操作。
  • 将对记录进行ACL检查。
编辑记录或批处理操作时通常会使用

JModelAdmin,尤其是在后端。


JModelItem - 你不太可能需要它。它只公开了一个方法getStoreId()和两个属性。你不需要这个类,除非作为一个命名的东西,而不是使用JModelLegacy你想在做一些基本的事情时扩展它,比如显示一个记录。 (我个人对事物的理解)。


结论:以上是对这些课程的一般性介绍,正如我所见。我的建议是详细研究Joomla如何使用它们,暴露了哪些方法以及如何使用它们。它们是非常强大的类,特别是对于CRUD操作,它们将帮助您完成所有繁重的工作。在了解了它们的作用后,您可以使用它们并在需要时覆盖它们。