利用jqgrid+加mysql的text类型实现简单自定义数据模型
下面来看一个关于利用jqgrid+加mysql的text类型实现简单自定义数据模型例子,希望对各位有帮助.
有的时候,我们做东西可能速度和安全在前期并不是我们考虑的重点,数据的灵活性可能对于一个不成熟的系统更加重要,这里我使用thinkphp+mysql+jqgrid做了一个简单的自定义数据模型,简单总结一下.
以前我也写过一个自定义模型:php一种不增加字段的自定义表单实现,但是当时因为没有jqgrid这样比较好用的工具,所以当时那个还是比较麻烦,这次当然也是不增加字段的,利用数据的text类型加json数据,实现虚拟的[表],听到这里,有的同学应该知道,如果我们使用mongodb其实做起来就更加的灵活和简便,但是,因为这个东西比较小,就先这样用着了.
首先功能特点,通过配置文件,动态配置字段的key,类型,排序,显示,是否必填等等,比如图片类型,定义为image即可,看一下配置文件,代码如下:
return array ( //包名前缀 'pack_pre' => 'Pack_' , //商品管理字段配置 /** * key为字段索引、存储字段 * name为字段显示名称 * required是否必填1是0不是 * hidden:列表是否显示,1隐藏,0显示,此选项会影响搜索,但不影响编辑 * type类型:<img,url,text>三种类型 * 字段显示顺序与key的顺序一致 */ 'goodsfield' => array ( //id为系统保留字段 //商品名 'title' => array ( 'name' => '商品名' , 'hidden' =>0, 'required' =>1, 'type' => 'text' , ), //spu 'spu' => array ( 'name' => 'spu' , 'hidden' =>0, 'required' =>1, 'type' => 'text' , ), //图片地址 'image' => array ( 'name' => '图片地址' , 'hidden' =>0, 'required' =>1, 'type' => 'img' , ), //url 'url' => array ( 'name' => '详情地址' , 'hidden' =>0, 'required' =>1, 'type' => 'url' , ), ), //以下两个映射针对goodsfield而言 //goods_info api map,无映射即使用原字段 'goodsinfomap' => array ( ), //开源代码phpfensi测试数据 //pack post api map,商品包下发amc字段映射无映射即使用原字段 'map' => array ( ), );可以通过配置,非常方便修改,并一改全改,增删改.
2,html的jqgrid代码,代码如下:
jQuery( "#goodsList" ).jqGrid({ url: '__APP__?m=Home&a=getList' , datatype: "json" , mtype: 'POST' , colNames:[ 'ID' ,<{$feildname}>, '修改时间' , '操作' ], colModel:[ {name: 'id' ,width:25,index: 'id' ,setGridHeight: "auto" }, <{$feildmap}> {name: 'lastdotime' ,sortable: true }, {name: 'edit' ,search: false ,sortable: false }, ], rowNum:10, rowList:[10,20,30], multiselect: true , //复选框 pager: '#goodsPager' , sortname: 'lastdotime' , viewrecords: true , sortorder: "desc" , editurl: '__APP__?m=Home&a=oper' , //添加修改操作url autowidth: true , height: '100%' });3,三个比较重要的函数,代码如下:
//获取字段名称 function feild_name( $feild ){ $fields = C( $feild ); $feild = '' ; foreach ( $fields as $val ){ $feild .= "'" . $val ['name ']."' ,"; } $feild = rtrim( $feild , ',' ); return $feild ; } //获取字段字典 function feild_map( $feild ){ $fields = C( $feild ); $feildmap = '' ; foreach ( $fields as $key => $val ){ $feildmap .= '{name:\' '.$key.' \ ',sortable:false,editable:true' ; if (1== $val [ 'hidden' ]){ $feildmap .= ',hidedlg:true,hidden:true,editrules:{edithidden:true,' ; } else { $feildmap .= ',editrules:{' ; } if (1== $val [ 'required' ]){ $feildmap .= 'required:true}' ; } else { $feildmap .= 'required:false}' ; } $feildmap .= '},' . "\n" ; } return $feildmap ; } //获取字段列表 function feild_list( $feild , $array = array (), $row = array ()){ $row = json_decode( $row [ 'value' ],true); $fields = C( $feild ); foreach ( $fields as $key => $val ){ switch ( $val [ 'type' ]){ case 'url' : $array []= '<a href="' . $row [ $key ]. '" style="color:#0018D1" target="_blank">' . $row [ $key ]. '</a>' ; break ; case 'img' : $array []= '<img src="' . $row [ $key ]. '" width="60" />' ; break ; default : $array [] = $row [ $key ]; } } return $array ; }代码没有什么,就是通过json对象动态配置.
查看更多关于利用jqgrid+加mysql的text类型实现简单自定义数据模的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30531