php一种不增加字段的自定义表单实现

来源:岁月联盟 编辑:exp 时间:2012-10-19

很多开源的程序系统都有自定义表单功能,比如织梦和帝国;他们的自定义表单是创建了一个新的表,这是一种实现方式,但是有的时候我们可能需要一些附属的内容,或并不需要建多个表,只希望通过一个字段来存放我们附加的这些内容,这时候我们就可以通过下面这种实现方式来实现。

先看一下实现效果:

 

我们可以设置他的提示文字,字段,类型,默认值,参数,排序,是否在列表显示。当然我们还可以增加一些类似的展现方式,是否加亮等等。其类型有文本、下拉,单选,复选,多行文本等类型。看一下表结构:

 

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:;