很多开源的程序系统都有自定义表单功能,比如织梦和帝国;他们的自定义表单是创建了一个新的表,这是一种实现方式,但是有的时候我们可能需要一些附属的内容,或并不需要建多个表,只希望通过一个字段来存放我们附加的这些内容,这时候我们就可以通过下面这种实现方式来实现。
先看一下实现效果:
我们可以设置他的提示文字,字段,类型,默认值,参数,排序,是否在列表显示。当然我们还可以增加一些类似的展现方式,是否加亮等等。其类型有文本、下拉,单选,复选,多行文本等类型。看一下表结构:
Id不用说了,name就是表单提示文字,也就是比如姓名,性别等,qian和ziduan 是结合用的,为了就是好区分,用一个前缀和字段来组成自定义的字段标签,比较容易区分,type就是类型,value就是默认值,whcs就是参数,这个参数是默认在其类型是文本或多行文本才起作用,文本时第一个参数限制最大字节数,第二个限制长度。Role就是排序,yesno就是是否在前台显示。
代码就不用细说了吧,在设置这个自定义表单的时候比较简单,就是遍历一下,根据其type组合。
我给大家看一下这个地方的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
//获取参数配置信息 $system = $this->tmp_mod->getAllSystem(); if($system){ foreach($system as $key=>$val){ if($val['name']&&$val['ziduan']){ $zhu = ''; if($val['value']){ $value = @explode(',',$val['value']); } if($val['whcs']){ $whcs = @explode('$',$val['whcs']); } if(2==$val['type']){ $zhu = '<select name="'.$val['qian'].$val['ziduan'].'">'; foreach($value as $k=>$v){ $zhu .='<option value="'.$v.'">'.$v.'</option>'; } $zhu .='</select>'; }elseif(3==$val['type']){ foreach($value as $k=>$v){ $check=''; if('0'==$k){ $check = 'checked'; } $zhu .='<input type="radio" name="'.$val['qian'].$val['ziduan'].'" '.$check.' value="'.$v.'">'.$v; } }elseif(4==$val['type']){ foreach($value as $m=>$n){ $zhu .='<input type="checkbox" name="'.$val['qian'].$val['ziduan'].'[]" value="'.$n.'">'.$n; } } $biao[$key]['name'] = $val['name']; switch ($val['type']){ case '1':$biao[$key]['value']='<input type="text" id="'.$val['qian'].$val['ziduan'].'" name="'.$val['qian'].$val['ziduan'].'" maxlength="'.$whcs[0].'" style="width:'.$whcs[1].'px" value="'.$val['value'].'" />';break; case '2':$biao[$key]['value']=$zhu;break; case '3':$biao[$key]['value']=$zhu;break; case '4':$biao[$key]['value']=$zhu;break; case 5:$biao[$key]['value']='<textarea id="'.$val['qian'].$val['ziduan'].'" style="width:'.$whcs[0].'px;height:'.$whcs[1].'px" name="'.$val['qian'].$val['ziduan'].'">'.$val['value'].'</textarea>';break; default:; } } } } |
本文链接:http://www.521php.com/archives/567/
程序本天成,妙手偶得之!我们只是代码的搬运工!
转载请注明:http://www.521php.com/archives/567/