`
we1818
  • 浏览: 61849 次
  • 性别: Icon_minigender_1
  • 来自: 湖州
社区版块
存档分类
最新评论

joomla源代码探析续(二十八) 如何扩展JTable类

    博客分类:
  • php
阅读更多
JTable类是Active Record设计模式(web应用中应用最为广泛,最为简单的数据库相关的设计模式,笔者)的实现。JTable在joomla与数据库交互过程中广泛的使用。要使用JTable,首先要创建一个JTable的子类。下面是我们的一个例子:



defined('_JEXEC') or die();

class TableRecipes extends JTable
{
var $id = null;
var $ingredients = null;
var $instructions = null;
var $serves = null;
var $difficulty = null;
var $prep_time = null;
var $cook_time = null;
var $published = 0;

function __construct(&$db)
{
  parent::__construct( '#__recipes', 'id', $db );
}
}

JTable的子类命名前缀是Table,然后就是首字母大写的表名,类中的成员变量对应着数据库中的字段名,默认值与表中的字段默认值应该相同。加入字段默认是NOT NULL,那就不能采用 'null'作为成员变量的默认值。

最后是类的构造器,构造器的参数是当前数据库的引用,子类的构造器调用JTable的构造器,父类的构造器有三个输入参数,第一个参数是表名,第二个是主键,第三个是当前数据库的链接。加入以上的类应用在Recipes组件上,那么代码应该放在/administrator/components /com_recipes/tables/recipes.php.文件中。


如何使用JTable扩展

为了使用JTable扩展,要首先在组件的代码中引入,下面一行是引入代码:

JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');

用下面的代码,可以获得JTable 扩展类的对象。

$row =& JTable::getInstance('recipes', 'Table');

请注意全小写的类名作为第一个参数,而 'Table'作为第二个参数,getInstance函数返回JTable的引用。

在model类(组件的JModel扩展)中可以可以采用以下代码获得JTable扩展的实例。

$row =& $this->getTable('recipes');


添加和更新数据记录

通常情况下,用户在客户端通过html form提交数据,而JRequest可以协助获得这些数据,用JRequest::get('post')可以获得 HTTP POST 方式提交的数组,获得的数组可以传递给bind函数。bind函数将post中对应内容自动绑定到相应名称的成员变量,请看下面的例子:

if (!$row->bind( JRequest::get( 'post' ) )) {
return JError::raiseWarning( 500, $row->getError() );
}

注意上面代码中的 JError::raiseWarning,JError::raiseWarning在bind方法出错的时候停止执行,getError()可以得到 JTable对象bind出错的返回信息。如果绑定成功,接下来调用store()函数。

if (!$row->store()) {
JError::raiseError(500, $row->getError() );
}

如果 JTable对象的任何成员变量为空,这些变量被默认忽略,这样可以更新指定字段,如果需要每个字段都有值,可以在store()函数中加上参数 'true',bind函数不检查数据类型,如果你要保证数据完整性,请在保存数据前程序代码中检查一下。

JTable读取数据

如果要用JTable加载表中指定一行,传递主键给load成员函数。以下是代码:

$row->load( $id );

JTable 删除数据
下面是代码是删除例子,删除指定的数据,要用delete函数。
$row->delete( $id );

如果要一次删除多行数据,你需要手动写query语句。
分享到:
评论

相关推荐

    Joomla2.5.16源代码

    **Joomla 2.5.16 源代码详解** Joomla,作为一个开源的内容管理系统(CMS),在网站开发领域有着广泛的应用。Joomla 2.5.16 是该系统的一个版本,提供了丰富的功能和易用性,适用于构建各种类型的网站,包括企业...

    joomla 组件 开发 详解 (附带源代码)

    本篇将深入探讨Joomla组件开发的详细过程,并结合源代码进行解析。 一、Joomla组件概述 在Joomla中,组件是最大的功能单元,它由多个部分组成,包括模型、视图、控制器、模板和语言文件等。组件开发涉及以下几个...

    joomla代码分析

    **Joomla代码分析** Joomla是一款非常流行的开源内容管理系统(CMS),它允许用户轻松地创建、管理和...通过深入研究和实践,开发者可以充分利用Joomla的开放源代码特性,实现各种定制化需求,创造出独具特色的网站。

    博客源代码 博客源代码

    9. **博客平台和CMS**:除了从头编写源代码,许多人也会选择使用WordPress、Joomla或Ghost等博客平台或内容管理系统,它们提供丰富的主题和插件,使得非程序员也能轻松搭建和管理博客。 10. **性能优化**:通过压缩...

    joomla_1.5_源代码ipnu.docx

    比较详细的分析joomla1.5源码。可以对应着源码一起学习

    joomla第三方登录开发过程

    ### Joomla第三方登录开发详解 #### 一、概述 在当今互联网时代,为了提高用户体验和方便用户登录,许多网站都引入了第三方登录功能。对于使用Joomla构建的网站来说,实现第三方登录同样非常重要。本文将详细介绍...

    Joomla!_1.5 扩展开发

    **Joomla! 1.5 扩展开发详解** Joomla! 是一款广泛使用的开源内容管理系统(CMS),它允许用户创建、管理和维护网站而无需深入编程知识。在Joomla! 1.5版本中,扩展开发是核心特性之一,允许开发者通过编写插件、...

    [PACKT]出品:学习Joomla!1.5扩展开发

    #### 二、Joomla! 1.5 扩展开发基础知识 ##### 1. Joomla! 简介 - **概述**:Joomla!是一款基于PHP和MySQL的开源内容管理系统,支持多种语言,广泛应用于构建企业级网站。 - **特点**:易于安装与配置;拥有丰富的...

    joomla分类组件 dj_classfilelds

    Joomla是一款开源的内容管理系统(CMS),它允许用户创建和管理网站,而无需深入理解编程语言。在Joomla的生态系统中,组件是其核心部分,它们提供了网站的主要功能。"dj_classfilelds"是一个专为Joomla设计的分类...

    Joomla扩展开发工具

    这是一个开发环境,不仅集成了Joomla的插件,还有Drupal和WordPress的开发环境.可以实现Joomla类库的自动代码提示。这个是很难得的哦,很多PHP开发工具,并没有针对Joomla类库的自动...这是开发Joomla扩展的必备工具。

    joomla 3.9.15完全安装包及中文扩展组件

    **Joomla 3.9.15 完全安装包及中文扩展组件详解** Joomla,作为一款全球知名的开源内容管理系统(CMS),以其强大的可扩展性和易用性深受广大网站开发者喜爱。此次提供的"Joomla 3.9.15完全安装包"包含了Joomla系统...

    joomla资料 joomla开发 joomla教程

    Joomla是一种开源的内容管理系统(CMS),它以其强大的功能和易用性在全球范围内受到广泛的欢迎。然而,尽管Joomla被公认为世界上最优秀的CMS之一,但在中国的普及和发展却面临着一些挑战。 首先,Joomla在中国的...

    Joomla插件编程指南

    它的内容不仅覆盖了从基础到高级的各个层面,而且由于Joomla的源代码不断更新,书中的一些信息可能不完全准确,但这并不影响其对Joomla插件开发者的指导价值。值得一提的是,本书由Jisse Reitsma撰写,Yireo ...

    Joomla扩展(幻灯片式图片浏览)

    **Joomla扩展:幻灯片式图片浏览** Joomla是一个流行的开源内容管理系统(CMS),它为网站开发提供了强大的工具和灵活性。"Joomla扩展(幻灯片式图片浏览)"是指专门为Joomla设计的一种组件,它增加了网站的功能,...

    joomla漏洞利用代码

    joomla漏洞利用代码,影响版本joomla1.5-3.4.最开始检测到利用该漏洞实施入侵的是 Securi 安全团队

    joomla模板仿制教程第二集

    【Joomla模板仿制教程第二集】是一门针对初学者的基础入门课程,旨在教会学员如何在Joomla内容管理系统中创建和定制自己的模板。Joomla是一个流行的开源CMS平台,以其灵活性和丰富的功能闻名,广泛用于构建各种类型...

    Joomla源代码

    源代码的分析和理解对于想要深入研究网站开发或者计划使用Joomla!构建网站的人来说非常重要。通过掌握Joomla!的架构和功能,开发者能够更高效地利用这一强大的工具,创建出满足需求的网站。同时,持续关注和学习新...

Global site tag (gtag.js) - Google Analytics