官方系列教材 - E计划

Joomla组件开发教程

在上一节,我们已经知道可以在组件的入口点文件中写逻辑代码。但是在开始写代码逻辑之前,首先我们要做的就是依据实际的需求创建出需要的数据表。有了这个表才能进行下一步的操作。这一节就来说明如何在安装组件的时候创建需要的数据表

 1,安装v1.0.2版本


下载v1.0.2版本。[下载文件:]com_zmaxbookv1.0.2_2020-10-29_for_j3x.zip,执行安装完成后,使用phpmyadmin登录数据库查看,数据表是否成功的创建。如图:

 

说明我们成功的创建出数据表了。如果你没有成功创建,请先卸载掉旧的组件版本

2,如何实现的?


实现这个是非常的简单的,我们只需要在组件的清单文件中指定安装时执行的SQL文件即可。v1.0.2版本的清单文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.0.0" method="upgrade">
	 
	<name>zmaxbook</name>
	<version>1.0.2</version>
	<!-- 可选项 关于组件版权的一些说明  -->
	<creationDate>2020-10-29</creationDate>
	<author>ZMAX团队</author>
	<authorEmail>zhang19min88AT163.com</authorEmail>
	<authorUrl>http://www.zmax99.com</authorUrl>
	<copyright>南宁市程序人软件科技有限责任公司保留所有权利!</copyright>
	<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
	<description>
		  ZMAX图书管理解决方案,E计划教程组件
	</description>
	
	<install> <!--  安装时执行的SQL-->
		<sql>
			<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>				
		</sql>
	</install>
	
	<uninstall> <!--  卸载时执行的SQL-->
		<sql>
			<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
		</sql>
	</uninstall>
	
	<update> <!--  更新时执行的SQL-->
		<schemas>
			<schemapath type="mysql">sql/updates/mysql</schemapath>
		</schemas>
	</update>
	
	<administration>
		<!-- 后台管理菜单名称-->
		<menu>ZMAX图书管理系统</menu>
		<!--  组件后台需要的文件 -->
		<files folder="admin">					
			<filename>index.html</filename>
			<filename>zmaxbook.php</filename>
			<folder>sql</folder>
		</files>	
	</administration>
</extension>

 通过上面,我们可以很直观的看到,不仅仅可以指定安装时执行的SQL语句,也可以指定卸载和更新时的SQL语句

另外很重要的一点就是大家在自己写XML文件的时候,一定要注意在files节点新增加了一个folder子节点

			<folder>sql</folder>

 如果没有这个节点,那么安装的时候就不会复制文件,系统会提示找不到SQL文件。

 最后我们v1.0.2版本的组件文件夹结构(SQL有关的部分)如下:

install.mysql.utf8.sql文件内容

--
--	图书表
--	SINCE v1.0.3
--  DATE  2020-10-29
--
DROP TABLE IF EXISTS `#__zmaxbook_item`;
CREATE TABLE IF NOT EXISTS `#__zmaxbook_item` (
  `id` int(11) NOT NULL AUTO_INCREMENT,							/*记录的唯一ID*/
  `user_id` int(11) NOT NULL,									/*记录拥有者的ID*/
  `title` varchar(256) DEFAULT NULL,							/*书名*/
  `intro` text NOT NULL,										/*简介*/
  `author` varchar(256) NOT NULL,								/*作者*/
  `price` FLOAT NOT NULL DEFAULT '0',					        /*价格*/		
  `created` datetime NOT NULL,									/*创建的时间*/
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

uninstall.mysql.utf8.sql文件内容

DROP TABLE IF EXISTS `#__zmaxbook_item`;

3,关于数据表的命名说明


具体的SQL语法不属于本系列教程的讨论范围,如果不熟悉,可以查找相关资料学习。

在joomla中,由于支持多个表前缀,所以在安装之前,我们是不能确定当前用户的表前缀是多少的。所以,在SQL文件中,都是使用#__来代表表的前缀的,最后真实的前缀由joomla系统帮我替换。

对于数据表的名称,一般我们建议以#__组件的名称_业务名称。比如#__zmaxbook_item这种形式。

4,附件


附件1组件v1.0.2版本源码:[下载文件:]com_zmaxbookv1.0.2_2020-10-29_for_j3x.zip

作者: 樱木花道

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

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第11章 支持多语言

第12章 前台展示组件

第13章 组件开发FAQ

第14章 高级功能

第15章 使用分类

第16章 让组件支持插件

第17章 安全