Rumah >php教程 >php手册 >利用jqgrid+加mysql的text类型实现简单自定义数据模型

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

WBOY
WBOYasal
2016-05-25 16:38:351140semak imbas

下面来看一个关于利用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 alt="利用jqgrid+加mysql的text类型实现简单自定义数据模型 " >三种类型 
     * 字段显示顺序与key的顺序一致 
    */ 
    &#39;goodsfield&#39; => array( 
        //id为系统保留字段 
        //商品名 
        &#39;title&#39; =>array( 
            &#39;name&#39;    =>&#39;商品名&#39;, 
            &#39;hidden&#39;  =>0, 
            &#39;required&#39;=>1, 
            &#39;type&#39;    =>&#39;text&#39;, 
        ), 
        //spu 
        &#39;spu&#39; =>array( 
            &#39;name&#39;    =>&#39;spu&#39;, 
            &#39;hidden&#39;  =>0, 
            &#39;required&#39;=>1, 
            &#39;type&#39;    =>&#39;text&#39;, 
        ), 
        //图片地址 
        &#39;image&#39; =>array( 
            &#39;name&#39;    =>&#39;图片地址&#39;, 
            &#39;hidden&#39;  =>0, 
            &#39;required&#39;=>1, 
            &#39;type&#39;    =>&#39;img&#39;, 
        ), 
        //url 
        &#39;url&#39; =>array( 
            &#39;name&#39;    =>&#39;详情地址&#39;, 
            &#39;hidden&#39;  =>0, 
            &#39;required&#39;=>1, 
            &#39;type&#39;    =>&#39;url&#39;, 
        ), 
    ), 
    //以下两个映射针对goodsfield而言 
    //goods_info api map,无映射即使用原字段 
    &#39;goodsinfomap&#39;=>array( 
    ),
    //pack post api map,商品包下发amc字段映射无映射即使用原字段 
    &#39;map&#39;=>array( 
    ), 
);

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

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

jQuery("#goodsList").jqGrid({ 
       url:&#39;__APP__?m=Home&a=getList&#39;, 
    datatype: "json", 
    mtype: &#39;POST&#39;, 
       colNames:[&#39;ID&#39;,<{$feildname}>,&#39;修改时间&#39;,&#39;操作&#39;], 
       colModel:[ 
           {name:&#39;id&#39;,width:25,index:&#39;id&#39;,setGridHeight:"auto"}, 
        <{$feildmap}> 
        {name:&#39;lastdotime&#39;,sortable:true}, 
        {name:&#39;edit&#39;,search:false,sortable:false}, 
       ], 
       rowNum:10, 
       rowList:[10,20,30], 
    multiselect:true,  //复选框 
       pager: &#39;#goodsPager&#39;, 
       sortname: &#39;lastdotime&#39;, 
    viewrecords: true, 
    sortorder: "desc", 
    editurl:&#39;__APP__?m=Home&a=oper&#39;,//添加修改操作url 
    autowidth:true, 
    height:&#39;100%&#39; 
});

 

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

//获取字段名称 
function feild_name($feild){ 
    $fields = C($feild); 
    $feild = &#39;&#39;; 
    foreach($fields as $val){ 
        $feild .="&#39;".$val[&#39;name&#39;]."&#39;,"; 
    } 
    $feild = rtrim($feild,&#39;,&#39;); 
    return $feild; 
} 
//获取字段字典 
function feild_map($feild){ 
    $fields = C($feild); 
    $feildmap =&#39;&#39;; 
    foreach($fields as $key=>$val){ 
        $feildmap .= &#39;{name:\&#39;&#39;.$key.&#39;\&#39;,sortable:false,editable:true&#39;; 
        if(1==$val[&#39;hidden&#39;]){ 
            $feildmap .=&#39;,hidedlg:true,hidden:true,editrules:{edithidden:true,&#39;; 
        }else{ 
            $feildmap .= &#39;,editrules:{&#39;; 
        } 
        if(1==$val[&#39;required&#39;]){ 
            $feildmap .=&#39;required:true}&#39;; 
        }else{ 
            $feildmap .=&#39;required:false}&#39;; 
        } 
        $feildmap .= &#39;},&#39;."\n"; 
    } 
    return $feildmap; 
} 
//获取字段列表 
function feild_list($feild,$array=array(),$row=array()){ 
    $row = json_decode($row[&#39;value&#39;],true); 
    $fields = C($feild); 
    foreach($fields as $key=>$val){ 
        switch($val[&#39;type&#39;]){ 
            case &#39;url&#39;:$array[]=&#39;<a href="&#39;.$row[$key].&#39;" style="color:#0018D1" target="_blank">&#39;.$row[$key].&#39;</a>&#39;;break; 
            case &#39;img&#39;:$array[]=&#39;<img  src="&#39;.$row[$key].&#39;"    style="max-width:90%" / alt="利用jqgrid+加mysql的text类型实现简单自定义数据模型 " >&#39;;break; 
            default:$array[] = $row[$key]; 
        } 
    } 
    return $array; 
}

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


教程网址:

欢迎收藏∩_∩但请保留本文链接。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn