利用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即可,看一下配置文件,代码如下:
- 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.com
 - //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对象动态配置.
Tags: jqgrid模型 text类型数据
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
 - PHP新手上路(一)(7)
 - 惹恼程序员的十件事(5)
 - PHP邮件发送例子,已测试成功(5)
 - 致初学者:PHP比ASP优秀的七个理由(4)
 - PHP会被淘汰吗?(4)
 - PHP新手上路(四)(4)
 - 如何去学习PHP?(2)
 - 简单入门级php分页代码(2)
 - php中邮箱email 电话等格式的验证(2)
 
