官方系列教材 - E计划

Joomla组件开发教程

在此之前,我们的模型类一直都是继承自JModelLegacy这个类型,这是Joomla最基础的模型类型,其核心任务是完成MVC框架,在此基础上,Joomla还提供了更加高级的模型类,JModelForm和JModelAdmin。在本节我们就来简单的了解一下Joomla的高级模型类型

1,本节目标


了解Joomla高级的模型类

2,理论基础


为了方便开发,joomla提供了不同层次的类继承。

  • JModelLegacy这个是最基础的模型类,实现了对MVC架构的支持
  • JModelForm类继承了JModelLegacy类,在此基础上提供了对XML表单的支持
  • JModelAdmin类继承了JModelForm类,且在此基础上提供了基本数据管理的操作,比如删除,保存等
  • JModelList类继承了JModelLegacy类,在其基础上实现了对列表的支持

为了简单起见,我们一直在使用JModelLegacy类作为我们自己组件模型的基类,在后面的章节中,为了充分发挥Joomla框架的优势,将选择合适的高级类作为模型的基类。 

3,一些说明


 1,在Joomla1.5,2.5时代,使用的基础模型类是JModel类,这个类在J3.x以及以上版本中已经不存在了。取代它的是JModelLegacy类(其中Legacy英文是继承,兼容的意思)

 2,Joomla关于MVC各个类的实现源码在网站根目录 libraries\src\MVC 这个目录下面。在实际阅读代码的时候,你会发现上面提到的类并不存在,取而代之的是另外的一些类名。如AdminModel类。FormModel类。这是正常的。出现这个的原因是Joomla在对代码进行重构中,将全面使用命名空间的方式来组织代码。为了保持对已有代码的支持,joomla提供了一个类名映射的机制。关于类名映射的具体细节,可以直接查看网站根目录 libraries\classmap.php这个文件,这里面有所有的细节。

3,下面部分代码是有关MVC部分的类名映射

JLoader::registerAlias('JModelAdmin',                       '\\Joomla\\CMS\\MVC\\Model\\AdminModel', '5.0');
JLoader::registerAlias('JModelForm',                        '\\Joomla\\CMS\\MVC\\Model\\FormModel', '5.0');
JLoader::registerAlias('JModelItem',                        '\\Joomla\\CMS\\MVC\\Model\\ItemModel', '5.0');
JLoader::registerAlias('JModelList',                        '\\Joomla\\CMS\\MVC\\Model\\ListModel', '5.0');
JLoader::registerAlias('JModelLegacy',                      '\\Joomla\\CMS\\MVC\\Model\\BaseDatabaseModel', '5.0');
JLoader::registerAlias('JViewCategories',                   '\\Joomla\\CMS\\MVC\\View\\CategoriesView', '5.0');
JLoader::registerAlias('JViewCategory',                     '\\Joomla\\CMS\\MVC\\View\\CategoryView', '5.0');
JLoader::registerAlias('JViewCategoryfeed',                 '\\Joomla\\CMS\\MVC\\View\\CategoryFeedView', '5.0');
JLoader::registerAlias('JViewLegacy',                       '\\Joomla\\CMS\\MVC\\View\\HtmlView', '5.0');
JLoader::registerAlias('JControllerAdmin',                  '\\Joomla\\CMS\\MVC\\Controller\\AdminController', '5.0');
JLoader::registerAlias('JControllerLegacy',                 '\\Joomla\\CMS\\MVC\\Controller\\BaseController', '5.0');
JLoader::registerAlias('JControllerForm',                   '\\Joomla\\CMS\\MVC\\Controller\\FormController', '5.0');
JLoader::registerAlias('JTableInterface',                   '\\Joomla\\CMS\\Table\\TableInterface', '5.0');
JLoader::registerAlias('JTable',                            '\\Joomla\\CMS\\Table\\Table', '5.0');
JLoader::registerAlias('JTableNested',                      '\\Joomla\\CMS\\Table\\Nested', '5.0');

 

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第11章 支持多语言

第12章 前台展示组件

第13章 组件开发FAQ

第14章 高级功能

第15章 使用分类

第16章 让组件支持插件

第17章 安全