在上一节,我们已经知道可以在组件的入口点文件中写逻辑代码。但是在开始写代码逻辑之前,首先我们要做的就是依据实际的需求创建出需要的数据表。有了这个表才能进行下一步的操作。这一节就来说明如何在安装组件的时候创建需要的数据表
下载v1.0.2版本。[下载文件:]com_zmaxbookv1.0.2_2020-10-29_for_j3x.zip,执行安装完成后,使用phpmyadmin登录数据库查看,数据表是否成功的创建。如图:
说明我们成功的创建出数据表了。如果你没有成功创建,请先卸载掉旧的组件版本
实现这个是非常的简单的,我们只需要在组件的清单文件中指定安装时执行的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`;
具体的SQL语法不属于本系列教程的讨论范围,如果不熟悉,可以查找相关资料学习。
在joomla中,由于支持多个表前缀,所以在安装之前,我们是不能确定当前用户的表前缀是多少的。所以,在SQL文件中,都是使用#__来代表表的前缀的,最后真实的前缀由joomla系统帮我替换。
对于数据表的名称,一般我们建议以#__组件的名称_业务名称。比如#__zmaxbook_item这种形式。
附件1组件v1.0.2版本源码:[下载文件:]com_zmaxbookv1.0.2_2020-10-29_for_j3x.zip
评论 (0)