php一种不增加字段的自定义表单实现
很多开源的程序系统都有自定义表单功能,比如织梦和帝国;他们的自定义表单是创建了一个新的表,这是一种实现方式,但是有的时候我们可能需要一些附属的内容,或并不需要建多个表,只希望通过一个字段来存放我们附加的这些内容,这时候我们就可以通过下面这种实现方式来实现。
先看一下实现效果:
我们可以设置他的提示文字,字段,类型,默认值,参数,排序,是否在列表显示。当然我们还可以增加一些类似的展现方式,是否加亮等等。其类型有文本、下拉,单选,复选,多行文本等类型。看一下表结构:
Id不用说了,name就是表单提示文字,也就是比如姓名,性别等,qian和ziduan 是结合用的,为了就是好区分,用一个前缀和字段来组成自定义的字段标签,比较容易区分,type就是类型,value就是默认值,whcs就是参数,这个参数是默认在其类型是文本或多行文本才起作用,文本时第一个参数限制最大字节数,第二个限制长度。Role就是排序,yesno就是是否在前台显示。
代码就不用细说了吧,在设置这个自定义表单的时候比较简单,就是遍历一下,根据其type组合。
我给大家看一下这个地方的代码。
[php] view plaincopyprint? //获取参数配置信息
$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:;
}
}
}
}
补充:Web开发 , php ,