Phpcms v9 开发留言板

功能比较简单,写写为了记住这个过程。 新建一张数据表xx_gbook,有以下字段 Id int(4) 自增长 非空 Name varchar(255) utf
功能比较简单,写写为了记住这个过程。 新建一张数据表xx_gbook,有以下字段

Id int(4) 自增长 非空 Name varchar(255) utf-8 Phone int(20) Address varchar(255) utf-8 Content text(500) utf-8 Inputtime int(12)

一、创建模块存放目录 在/phpcms/modules/下创建一个文件夹gbook用来存放模块,gbook文件下包含三个文件夹,classes(模块类库包)、functions(模块函数类包)、templates(模版包,一般是后台模版)。 二、创建模块控制器类(注意:类名称与控制器文件名必须相同)、数据库模型类 在gbook文件夹下新建文件gbook.php,前台不用权限控制,后台类要有权限控制,所以后台新建类要加载并继承admin,写法 pc_base::load_app_class('admin','admin',0); class gbook extends admin(){} 另外控制器的方法名不要和该类中的方法名一样 数据库模型类,在/phpcms/model/目录下新建gbook_model.class.php文件用来加载xx_gbook表。 附上我写的一个小例子

Gbook_model.class.php <?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_sys_class('model','',0); //加载公用模型类 class gbook_model extends model{ //创建新的数据模型类 public function __construct(){ $this->db_config = pc_base::load_config('database'); //数据库连接 $this->db_setting = 'default'; //连接设置 $this->table_name = 'gbook'; //数据表名 parent::__construct(); } } ?>

Gbook.php <?php defined('IN_PHPCMS') or exit('No permission resources.'); //判断是不是有控制器 pc_base::load_app_class('admin','admin',0); //加载admin类 class gbook extends admin{ //创建新类并继承admin的属性 public function __construct(){ $this->db_gbook = pc_base::load_model('gbook_model'); //加载数据库模型类 } //默认列表显示留言 public function init(){ //分页设置 $page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1; //分页条数 $pageSize = 20; //查询语句 $gbookList = $this->db_gbook->listinfo(array(),'inputtime DESC',$page,$pageSize); //模版显示 include $this-> admin_tpl("gbook_list"); } //删除留言 public function del(){ //删除语句 if ($this->db_gbook->delete(array('id'=>$_GET['id']))) { echo 1; }else{ echo ''; } } } ?>

Gbook_list.tpl.php <?php defined('IN_ADMIN') or exit('No permission resources.'); include $this->admin_tpl('header','admin');?> <div class="pad-10"> <div class="explain-col"> <?php echo "管理人员根据浏览者的留言,提取相关的信息。";?> </div> <div class="bk10"></div> <div class="table-list"> <table width="100%"> <thead> </thead> <tbody> <?php if($gbookList):?> //判断是否存在数据,而后循环输出 <?php foreach($gbookList as $gbook):?> <tr> <td><?php echo $gbook['id']?></td> <td><?php echo $gbook['name']?></td> <td align="center"><?php echo date("Y-m-d H:i:s",$gbook['inputtime']);?></td> <td><?php echo $gbook['phone']?></td> <td><?php echo $gbook['address']?></td> <td><?php echo $gbook['content']?></td> <td><a href="javascript:delgbook(<?php echo $gbook['id'];?>)">删除</a></td> </tr> <?php endforeach;?> <?php endif;?> </tbody> </table> <div id="pages"><?php echo $this->db_gbook->pages?></div> </div> </div> <script type="text/javascript"> function delgbook(id){ if(confirm("是否确定删除此留言")){ //ajax.post方法传递id给gbook.php中的del()函数 jQuery.post('?m=gbook&c=gbook&a=del&id=' + id + '&pc_hash=<?php echo $_SESSION['pc_hash']?>',{},function(data){ if(data){ location.reload(); }else{ alert("留言删除失败"); } }); } } jQuery(document).ready(function(){ window.top.$('#display_center_id').css('display','none'); jQuery(".subnav").css('display','none'); }) </script>

三、前台数据添加模块 这里用的是api+ajax的方式实现的,与官方网站给的有些不同,具体参考各人习惯 1、 在/api/目录下创建gbook.php文件,实现前后台数据对接

<?php defined('IN_PHPCMS') or exit('No premission resources.'); pc_base::load_app_class('GbookApi','gbook'); //加载接口类 $methodName = $_GET['act']; echo GbookApi::$methodName(); ?>

2.在/phpcms/modules/gbook/classes/目录下创建GbookApi.class.php文件

<?php //定义API名称 class GbookApi{ public static function gbook_reg(){ $gbookModel = pc_base::load_model("gbook_model"); if($gbookModel -> insert(array('id'=>'','name'=>$_POST['name'],'phone'=>$_POST['phone'],'address'=>$_POST['address'],'content'=>$_POST['content'],'inputtime'=>time()))){ echo '1'; }else{ echo ''; } } } ?>

3、 前台模版/phpcms/templates/default/content/目录下新建文件gbook.html

<script type="text/javascript"> $(function(){ $('#botton_gbook').click(function() { jQuery.post("/api.php?op=gbook&act=gbook_reg",jQuery("#form_gbook").serialize(), function(data) { if (data) { $('.input').attr({ "value" : "" }); $('.input').parent().find(".red").remove(); $('.input').parent().find(".green").remove(); $("#form_gbook").hide(); } else { alert("提问失败"); $('.input').attr({ "value" : "" }); $('.input').parent().find(".red").remove(); $('.input').parent().find(".green").remove(); } }); } }) })

</script> <form id="form_gbook"> <table bordercolor="#F2F2F2" width="100%" cellpadding="0" cellspacing="0" border="1"> <tr> <td align="right" valign="center" width="80px;">姓名:</td> <td align="left" valign="center"> <input type="text" name="name" id="name" class="required input" /> </td> </tr> <tr> <td align="right" valign="center" width="80px;">电话:</td> <td align="left" valign="center"> <input type="text" name="phone" id="phone" class="input" /> </td> </tr> <tr> <td align="right" valign="center" width="80px;">地址:</td> <td align="left" valign="center"> <input type="text" name="address" id="address" class="input" /> </td> </tr> <tr> <td align="right" valign="top" width="80px"></td> <td align="left" valign="top"> <textarea name="content" id="content" cols="50" rows="5" class="required input"></textarea> </td> </tr> <tr> <td colspan="2" align="center" valign="center"> <input type="button" value="提交" id="botton_gbook" onclick="return checkform_gbook();" /> &nbsp;&nbsp; <input type="reset" value="重填" />

</td> </tr> </table> </form>