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

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

我正在努力掌握 Joomla (3.x) 框架背后的强大功能。

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


JModelAdmin

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

JModelLegacy

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

JModelList

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

JModelForm

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

JModelItem

原型(prototype)项目模型。


我知道 JModelLegacy 似乎是基础类。默认情况下,我的模型一直在扩展 JModelLegacy,但是,我想知道我是否可以利用其他类的好处。

如果有人了解这些模型,我将不胜感激解释这些模型类之间的区别,以及您将使用其中一个模型而不是其他模型的预期场景。

最佳答案

首先所有的类都可以在下面进行代码学习:

\libraries\legacy\model\

Classes

理解这些类应该(一般来说)与相应的 Controller 一起使用也很重要:JControllerLegacyJControllerFormJControllerAdmin.

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

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

所有模型都将扩展JModelLegacy


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

JModelLegacy example


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

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

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

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

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


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


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

关于php - Joomla 模型类型之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21704490/

相关文章:

model-view-controller - 在 Meteor 中,我在哪里建模我的业务规则?

javascript - 我如何编写路由器以从 URL 参数打开 Joomla Squeezebox 模式?

php - phpunit 有默认位置吗?或者当我想使用它时,我是否必须继续在命令行中导出路径?

javascript - 如何向开发类插入滚动条

ruby-on-rails - Rails 可选/:locale route

c++ - 在 QTreeView 中维护 checkedstatus 继承

css - Internet 浏览器 CSS : Joomla Custom template

mysql - 无法在 joomla 2.5 中声明外键

php - 使用随机位置方法显示所有位置

php - php和c之间共享配置文件