Joomla模型类型之间有什么区别?

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

我注意到有多种类型的模型可以在组件中使用


JModelAdmin

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

JModelLegacy

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

JModelList

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

JModelForm

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

JModelItem

原型项目模型。


我知道这似乎是基础班。我的模型一直在默认扩展,但是,我想知道我是否可以潜在地使用其他类的好处。JModelLegacyJModelLegacy

如果有人知道这些模型,我希望能解释一下这些模型类之间的差异,以及一个预期的场景,即你会使用一个模型而不是其他模型。


答案 1

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

\libraries\legacy\model\

Classes

同样重要的是要了解这些类应该(一般而言)与相应的控制器一起使用:和 。JControllerLegacyJControllerFormJControllerAdmin

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

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

所有型号都将扩展 。JModelLegacy


JModelList - 是一个用于处理项目列表的类。它提供分页和筛选。基本上,无论您在显示项目列表的任何地方,都可以使用.所有核心组件都依赖于 .JModelListJModelList

JModelLegacy example


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

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

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

  • 对记录执行批处理操作。
  • 将对记录进行 ACL 检查。

JModelAdmin通常在编辑记录或批处理操作时使用,尤其是在后端。


JModelItem- 你不太可能需要它。它只公开一个方法和两个属性。您将不需要此类,除非作为命名事物,而不是在执行基本操作(如显示记录)时使用要扩展它。(我个人对事物的理解)。getStoreId()JModelLegacy


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


答案 2

推荐