当前位置:首页 > PHP教程 > php高级应用 > 列表

利用jqgrid+加mysql的text类型实现简单自定义数据模型

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-10 08:56:50 浏览: 评论:0 

下面来看一个关于利用jqgrid+加mysql的text类型实现简单自定义数据模型例子,希望对各位有帮助.

有的时候,我们做东西可能速度和安全在前期并不是我们考虑的重点,数据的灵活性可能对于一个不成熟的系统更加重要,这里我使用thinkphp+mysql+jqgrid做了一个简单的自定义数据模型,简单总结一下.

以前我也写过一个自定义模型:php一种不增加字段的自定义表单实现,但是当时因为没有jqgrid这样比较好用的工具,所以当时那个还是比较麻烦,这次当然也是不增加字段的,利用数据的text类型加json数据,实现虚拟的“表”,听到这里,有的同学应该知道,如果我们使用mongodb其实做起来就更加的灵活和简便,但是,因为这个东西比较小,就先这样用着了.

首先功能特点,通过配置文件,动态配置字段的key,类型,排序,显示,是否必填等等,比如图片类型,定义为image即可,看一下配置文件,代码如下:

  1. return array
  2.     //包名前缀 
  3.     'pack_pre' => 'Pack_'
  4.     //商品管理字段配置 
  5.     /** 
  6.      * key为字段索引、存储字段 
  7.      * name为字段显示名称 
  8.      * required是否必填1是0不是 
  9.      * hidden:列表是否显示,1隐藏,0显示,此选项会影响搜索,但不影响编辑 
  10.      * type类型:<img,url,text>三种类型 
  11.      * 字段显示顺序与key的顺序一致 
  12.     */ 
  13.     'goodsfield' => array
  14.         //id为系统保留字段 
  15.         //商品名 
  16.         'title' =>array
  17.             'name'    =>'商品名'
  18.             'hidden'  =>0, 
  19.             'required'=>1, 
  20.             'type'    =>'text'
  21.         ), 
  22.         //spu 
  23.         'spu' =>array
  24.             'name'    =>'spu'
  25.             'hidden'  =>0, 
  26.             'required'=>1, 
  27.             'type'    =>'text'
  28.         ), 
  29.         //图片地址 
  30.         'image' =>array
  31.             'name'    =>'图片地址'
  32.             'hidden'  =>0, 
  33.             'required'=>1, 
  34.             'type'    =>'img'
  35.         ), 
  36.         //url 
  37.         'url' =>array
  38.             'name'    =>'详情地址'
  39.             'hidden'  =>0, 
  40.             'required'=>1, 
  41.             'type'    =>'url'
  42.         ), 
  43.     ), 
  44.     //以下两个映射针对goodsfield而言 
  45.     //goods_info api map,无映射即使用原字段 
  46.     'goodsinfomap'=>array
  47.     ),//开源代码phpfensi.com 
  48.     //pack post api map,商品包下发amc字段映射无映射即使用原字段 
  49.     'map'=>array
  50.     ), 
  51. ); 

可以通过配置,非常方便修改,并一改全改,增删改.

2,html的jqgrid代码,代码如下:

  1. jQuery("#goodsList").jqGrid({ 
  2.        url:'__APP__?m=Home&a=getList'
  3.     datatype: "json"
  4.     mtype: 'POST'
  5.        colNames:['ID',<{$feildname}>,'修改时间','操作'], 
  6.        colModel:[ 
  7.            {name:'id',width:25,index:'id',setGridHeight:"auto"}, 
  8.         <{$feildmap}> 
  9.         {name:'lastdotime',sortable:true}, 
  10.         {name:'edit',search:false,sortable:false}, 
  11.        ], 
  12.        rowNum:10, 
  13.        rowList:[10,20,30], 
  14.     multiselect:true,  //复选框 
  15.        pager: '#goodsPager'
  16.        sortname: 'lastdotime'
  17.     viewrecords: true
  18.     sortorder: "desc"
  19.     editurl:'__APP__?m=Home&a=oper',//添加修改操作url 
  20.     autowidth:true
  21.     height:'100%' 
  22. }); 

3,三个比较重要的函数,代码如下:

  1. //获取字段名称 
  2. function feild_name($feild){ 
  3.     $fields = C($feild); 
  4.     $feild = ''
  5.     foreach($fields as $val){ 
  6.         $feild .="'".$val['name']."',"; 
  7.     } 
  8.     $feild = rtrim($feild,','); 
  9.     return $feild
  10. //获取字段字典 
  11. function feild_map($feild){ 
  12.     $fields = C($feild); 
  13.     $feildmap =''
  14.     foreach($fields as $key=>$val){ 
  15.         $feildmap .= '{name:\''.$key.'',sortable:false,editable:true'
  16.         if(1==$val['hidden']){ 
  17.             $feildmap .=',hidedlg:true,hidden:true,editrules:{edithidden:true,'
  18.         }else
  19.             $feildmap .= ',editrules:{'
  20.         } 
  21.         if(1==$val['required']){ 
  22.             $feildmap .='required:true}'
  23.         }else
  24.             $feildmap .='required:false}'
  25.         } 
  26.         $feildmap .= '},'."\n"
  27.     } 
  28.     return $feildmap
  29. //获取字段列表 
  30. function feild_list($feild,$array=array(),$row=array()){ 
  31.     $row = json_decode($row['value'],true); 
  32.     $fields = C($feild); 
  33.     foreach($fields as $key=>$val){ 
  34.         switch($val['type']){ 
  35.             case 'url':$array[]='<a href="'.$row[$key].'" style="color:#0018D1" target="_blank">'.$row[$key].'</a>';break
  36.             case 'img':$array[]='<img src="'.$row[$key].'" width="60" />';break
  37.             default:$array[] = $row[$key]; 
  38.         } 
  39.     } 
  40.     return $array

代码没有什么,就是通过json对象动态配置.

Tags: jqgrid模型 text类型数据

分享到: