Initial commit
This commit is contained in:
@@ -0,0 +1,557 @@
|
||||
<?php
|
||||
namespace Admin\Model;
|
||||
use Think\Model;
|
||||
class FeedbackFieldModel extends Model{
|
||||
const modelFieldPath = 'Data/feedbackFieldTemp/'; //字段模板路径
|
||||
protected $table_name;
|
||||
public function __construct(){
|
||||
$this->table_name="feedback";
|
||||
//注意,这里父类析构函数一定要放到最下面,否则框架自带的方法不能使用
|
||||
parent::__construct();
|
||||
}
|
||||
//自动验证
|
||||
//array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间])
|
||||
protected $_validate = array(
|
||||
array('formtype', 'require', '字段类型不能为空!'),
|
||||
array('field', 'require', '字段名称必须填写!'),
|
||||
array('field', 'isFieldUnique', '该字段名称已经存在!', 0, 'callback', 1),
|
||||
array('name', 'require', '字段别名必须填写!'),
|
||||
array('field', '/^[a-z_0-9]+$/i', '字段名只支持英文或数字!', 0, 'regex', 3),
|
||||
);
|
||||
/**
|
||||
* 验证字段名是否已经存在
|
||||
* @param type $fieldName
|
||||
* @return boolean false已经存在,true不存在
|
||||
*/
|
||||
public function isFieldUnique($fieldName) {
|
||||
if (empty($fieldName)) {
|
||||
return true;
|
||||
}
|
||||
if ($this->where(array('field' => $fieldName))->count()){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//增加
|
||||
public function data_add(){
|
||||
$data=$this->create();
|
||||
$fieldtype = $data['fieldtype'];
|
||||
//检查字段是否存在
|
||||
if ($this->field_exists("feedback", $data['field'])) {
|
||||
$this->error = '该字段已经存在!';
|
||||
return false;
|
||||
}
|
||||
|
||||
//增加字段
|
||||
$field = array(
|
||||
'tablename' => C("DB_PREFIX") .$this->table_name,
|
||||
'fieldname' => $data['field'],
|
||||
'fieldlen' => $data['fieldlen'],
|
||||
'defaultvalue' => $data['defaultvalue'],
|
||||
);
|
||||
if ($this->addFieldSql($fieldtype, $field)) {
|
||||
//更新htmlcode
|
||||
|
||||
$data['htmlcode']=$this->createFieldHtmlCode($data);
|
||||
//
|
||||
$fieldid = $this->add($data);
|
||||
if (!$fieldid){
|
||||
$this->error = '字段信息入库失败!';
|
||||
//回滚
|
||||
$this->execute("ALTER TABLE `{$field['tablename']}` DROP `{$field['fieldname']}`");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
return $fieldid;
|
||||
}
|
||||
//修改模型
|
||||
public function data_editor(){
|
||||
$data=$this->create();
|
||||
if (!$data['field_id']) {
|
||||
$this->error = '缺少字段id!';
|
||||
return false;
|
||||
} else {
|
||||
$fieldid = $fieldid ? $fieldid : (int) $data['field_id'];
|
||||
}
|
||||
//重置htmlcode
|
||||
$data['htmlcode']=htmlspecialchars_decode($data['htmlcode']);
|
||||
$data['htmlcode']=$this->createFieldHtmlCode($data);
|
||||
//原字段信息
|
||||
$info = $this->where(array("field_id" => $fieldid))->find();
|
||||
if (empty($info)) {
|
||||
$this->error = '该字段不存在!';
|
||||
return false;
|
||||
}
|
||||
//字段类型
|
||||
if (empty($data['formtype'])) {
|
||||
$data['formtype'] = $info['formtype'];
|
||||
}
|
||||
$field_type = $data['fieldtype'];
|
||||
if (false !== $this->save($data)) {
|
||||
//如果字段名变更
|
||||
if ($data['field'] && $info['field']) {
|
||||
//检查字段是否存在,只有当字段名改变才检测
|
||||
if ($data['field'] != $info['field'] && $this->field_exists($this->table_name, $data['field'])) {
|
||||
$this->error = '该字段已经存在!';
|
||||
//回滚
|
||||
$this->where(array("field_id" => $fieldid))->save($info);
|
||||
return false;
|
||||
}
|
||||
$field = array(
|
||||
'tablename' => C("DB_PREFIX") . $this->table_name,
|
||||
'newfilename' => $data['field'],
|
||||
'oldfilename' => $info['field'],
|
||||
'fieldlen' => $data['fieldlen'],
|
||||
'defaultvalue' => $data['defaultvalue'],
|
||||
);
|
||||
if (false === $this->editFieldSql($field_type, $field)) {
|
||||
$this->error = '数据库字段结构更改失败!';
|
||||
//回滚
|
||||
$this->where(array("field_id" => $fieldid))->save($info);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->error = '数据库更新失败!';
|
||||
return false;
|
||||
}
|
||||
$cat=M("feedback_cat")->select();
|
||||
foreach($cat as $v){
|
||||
$this->updateModelTemp($v["catid"]);
|
||||
}
|
||||
//
|
||||
return $data;
|
||||
}
|
||||
//删除字段
|
||||
public function data_delete($fieldid) {
|
||||
//原字段信息
|
||||
$info = $this->where(array("field_id" => $fieldid))->find();
|
||||
if (empty($info)) {
|
||||
$this->error = '该字段不存在!';
|
||||
return false;
|
||||
}
|
||||
//完整表名获取 判断主表 还是副表
|
||||
$tablename = $this->table_name;
|
||||
if ($this->deleteFieldSql($info['field'], C("DB_PREFIX") . $tablename)) {
|
||||
$this->where(array("field_id" => $fieldid))->delete();
|
||||
} else {
|
||||
$this->error = '数据库表字段删除失败!';
|
||||
return false;
|
||||
}
|
||||
//modeltemp
|
||||
$cat=M("feedback_cat")->select();
|
||||
foreach($cat as $v){
|
||||
$this->updateModelTemp($v["catid"]);
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
/**
|
||||
* 重新生成模型表单文件
|
||||
* @param type $modelId 模型id
|
||||
*/
|
||||
public function updateModelTemp($catid){
|
||||
$ModelModel=new \Admin\Model\FeedbackCatModel();
|
||||
$ModelModel->updateModelTemp($catid);
|
||||
}
|
||||
/**
|
||||
* 根据字段类型,删除对应的字段到相应表里面
|
||||
* @param type $filename 字段名称
|
||||
* @param type $tablename 完整表名
|
||||
*/
|
||||
protected function deleteFieldSql($filename, $tablename) {
|
||||
//不带表前缀的表名
|
||||
$noprefixTablename = str_replace(C("DB_PREFIX"), '', $tablename);
|
||||
if (empty($tablename) || empty($filename)) {
|
||||
$this->error = '表名或者字段名不能为空!';
|
||||
return false;
|
||||
}
|
||||
|
||||
if (false === $this->table_exists($noprefixTablename)) {
|
||||
$this->error = '该表不存在!';
|
||||
return false;
|
||||
}
|
||||
$sql = "ALTER TABLE `{$tablename}` DROP `{$filename}`;";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段删除失败!';
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 根据字段类型,增加对应的字段到相应表里面
|
||||
* @param type $field_type 字段类型
|
||||
* @param type $field 相关配置
|
||||
* $field = array(
|
||||
* 'tablename' 表名(完整表名)
|
||||
* 'fieldname' 字段名
|
||||
* 'maxlength' 最大长度
|
||||
* 'minlength' 最小值
|
||||
* 'defaultvalue' 默认值
|
||||
* 'minnumber' 是否正整数 和整数 1为正整数,-1是为整数
|
||||
* 'decimaldigits' 小数位数
|
||||
* )
|
||||
*/
|
||||
protected function addFieldSql($field_type, $field) {
|
||||
//表名
|
||||
$tablename = $field['tablename'];
|
||||
//字段名
|
||||
$fieldname = $field['fieldname'];
|
||||
//长度
|
||||
$fieldlen = $field['fieldlen'];
|
||||
switch ($field_type) {
|
||||
case "varchar":
|
||||
if (!$fieldlen) {
|
||||
$fieldlen = 255;
|
||||
}
|
||||
$fieldlen = min($fieldlen, 255);
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` VARCHAR( {$fieldlen} ) NOT NULL DEFAULT ''";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "tinyint":
|
||||
if (!$fieldlen) {
|
||||
$fieldlen = 3;
|
||||
}
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` TINYINT( {$fieldlen} ) " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "smallint":
|
||||
$minnumber = intval($minnumber);
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` SMALLINT " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "mediumint":
|
||||
$minnumber = intval($minnumber);
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` INT " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "int":
|
||||
$minnumber = intval($minnumber);
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` INT " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "mediumtext":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` MEDIUMTEXT";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "text":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` TEXT";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "date":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` DATE DEFAULT ''";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "datetime":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "timestamp":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "double":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` DOUBLE NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "float":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` FLOAT NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "bigint":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` BIGINT NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "longtext":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` LONGTEXT";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '数据库字段添加失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "char":
|
||||
$sql = "ALTER TABLE `{$tablename}` ADD `{$fieldname}` CHAR(255) NOT NULL DEFAULT ''";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 执行数据库表结构更改
|
||||
* @param type $field_type 字段类型
|
||||
* @param type $field 相关配置
|
||||
* $field = array(
|
||||
* 'tablename' 表名(完整表名)
|
||||
* 'newfilename' 新字段名
|
||||
* 'oldfilename' 原字段名
|
||||
* 'maxlength' 最大长度
|
||||
* 'minlength' 最小值
|
||||
* 'defaultvalue' 默认值
|
||||
* 'minnumber' 是否正整数 和整数 1为正整数,-1是为整数
|
||||
* 'decimaldigits' 小数位数
|
||||
* )
|
||||
*/
|
||||
protected function editFieldSql($field_type, $field) {
|
||||
//表名
|
||||
$tablename = $field['tablename'];
|
||||
//原字段名
|
||||
$oldfilename = $field['oldfilename'];
|
||||
//新字段名
|
||||
$newfilename = $field['newfilename'] ? $field['newfilename'] : $oldfilename;
|
||||
//长度
|
||||
$fieldlen = $field['fieldlen'];
|
||||
if (empty($tablename) || empty($newfilename)) {
|
||||
$this->error = '表名或者字段名不能为空!';
|
||||
return false;
|
||||
}
|
||||
|
||||
switch ($field_type) {
|
||||
case 'varchar':
|
||||
//最大值
|
||||
if (!$maxlength) {
|
||||
$maxlength = 255;
|
||||
}
|
||||
$maxlength = min($maxlength, 255);
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` VARCHAR( {$maxlength} ) NOT NULL DEFAULT ''";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'tinyint':
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` TINYINT " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'smallint':
|
||||
$minnumber = intval($minnumber);
|
||||
$defaultvalue = intval($defaultvalue);
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` SMALLINT " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT '{$defaultvalue}' DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'mediumint':
|
||||
$minnumber = intval($minnumber);
|
||||
$defaultvalue = intval($defaultvalue);
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` MEDIUMINT " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT '{$defaultvalue}' DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'int':
|
||||
$minnumber = intval($minnumber);
|
||||
$defaultvalue = intval($defaultvalue);
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` INT " . ($minnumber >= 0 ? 'UNSIGNED' : '') . " NOT NULL DEFAULT '{$defaultvalue}' DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'mediumtext':
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` MEDIUMTEXT";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'text':
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` TEXT";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'date':
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` DATE DEFAULT ''";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'datetime':
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'timestamp':
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "double":
|
||||
$defaultvalue = intval($defaultvalue);
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` DOUBLE NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "float":
|
||||
$defaultvalue = intval($defaultvalue);
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` FLOAT NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "bigint":
|
||||
$defaultvalue = intval($defaultvalue);
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` BIGINT NOT NULL DEFAULT 0";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "longtext":
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` LONGTEXT";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "char":
|
||||
$sql = "ALTER TABLE `{$tablename}` CHANGE `{$oldfilename}` `{$newfilename}` CHAR(255) NOT NULL DEFAULT ''";
|
||||
if (false === $this->execute($sql)) {
|
||||
$this->error = '字段结构更改失败!';
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$this->error = "字段类型" . $field_type . "不存在相应信息!";
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/*
|
||||
* 创建字段html代码
|
||||
*/
|
||||
public function createFieldHtmlCode($data){
|
||||
if($data['field_id']){
|
||||
$info=M("feedback_field")->find($data['field_id']);
|
||||
//当字段类型 and 宽度 and 高度 and 默认值 未改变的时候htmlcode等于提交过来的,否则执行重新生成动作
|
||||
if($info['field']==$data['field']&&$info['name']==$data['name']&&$info['formtype']==$data['formtype']&&$info['formwidth']==$data['formwidth']&&$info['formheight']==$data['formheight']&&$info['defaultval']==$data['defaultval']&&$info['tips']==$data['tips']){
|
||||
$htmlcode=$data['htmlcode'];
|
||||
}else{
|
||||
$htmlcode=$this->FieldHtmlCodeReplace($data);
|
||||
}
|
||||
}else{
|
||||
$htmlcode=$this->FieldHtmlCodeReplace($data);
|
||||
}
|
||||
return $htmlcode;
|
||||
}
|
||||
/*
|
||||
* 替换字段类型的代码
|
||||
*
|
||||
*/
|
||||
public function FieldHtmlCodeReplace($rs){
|
||||
//获取表单类型的模板文件
|
||||
$field_temp= file_get_contents(APP_PATH.self::modelFieldPath.$rs['formtype'].".php");
|
||||
//内容替换
|
||||
$field_temp= str_replace("{modelFieldTemp_field}",$rs['field'],$field_temp);
|
||||
$field_temp= str_replace("{tips}",$rs['tips'],$field_temp);
|
||||
$field_temp= str_replace("{defaultval}",$rs['defaultval'],$field_temp);
|
||||
//宽度
|
||||
if($rs['formwidth']){
|
||||
$style_formwidth="width:".$rs['formwidth']."px;";
|
||||
}else{
|
||||
$style_formwidth="";
|
||||
}
|
||||
$field_temp= str_replace("{style_formwidth}",$style_formwidth,$field_temp);
|
||||
//高度
|
||||
if($rs['formheight']){
|
||||
$style_formheight="height:".$rs['formheight']."px;";
|
||||
}else{
|
||||
$style_formheight="";
|
||||
}
|
||||
$field_temp= str_replace("{style_formheight}",$style_formheight,$field_temp);
|
||||
//编辑器高度 宽度替换(因为编辑器只调用数值,不需要css样式)
|
||||
$field_temp= str_replace("{formwidth}",$rs['formwidth'],$field_temp);
|
||||
$field_temp= str_replace("{formheight}",$rs['formheight'],$field_temp);
|
||||
//checkbox radio select选项替换
|
||||
$checkbox_option="";
|
||||
if($rs['formtype']=="checkbox"||$rs['formtype']=="radio"||$rs['formtype']=="select"){
|
||||
if($rs['defaultval']){
|
||||
$defaultval=explode("\r\n",$rs['defaultval']);
|
||||
foreach($defaultval as $v){
|
||||
$dufault_arr=explode(":",$v);
|
||||
$option_arr=explode("==",$dufault_arr[0]);
|
||||
$select_checked=$dufault_arr[1]=="default"?'<?=$r?"":"selected"?>':"";//select 默认选择中的
|
||||
$checked_default=$dufault_arr[1]=="default"?'<?=$r?"":"checked"?>':"";//checked radio 默认选择中的
|
||||
$option_name=trim($option_arr[0]);//字段名称
|
||||
$option_value=trim($option_arr[1]==""?$option_arr[0]:$option_arr[1]);//字段值 为空时=名称
|
||||
if($rs['formtype']=="checkbox"){
|
||||
$checkbox_option.='<label class="label-radio"><input type="checkbox" name="'.$rs['field'].'[]" value="'.$option_value.'" class="modelform_title" <?=strstr($r[\''.$rs['field'].'\'],\'|'.$option_value.'|\')?"checked":""?> '.$checked_default.'/>'.$option_name.'</label>';
|
||||
}
|
||||
if($rs['formtype']=="radio"){
|
||||
$checkbox_option.='<label class="label-radio"><input type="radio" name="'.$rs['field'].'" value="'.$option_value.'" class="modelform_title" <?=$r[\''.$rs['field'].'\']==\''.$option_value.'\'?"checked":""?> '.$checked_default.'/>'.$option_name.'</label>';
|
||||
}
|
||||
if($rs['formtype']=="select"){
|
||||
$checkbox_option.='<option value="'.$option_value.'" <?=$r[\''.$rs['field'].'\']==\''.$option_value.'\'?"selected":""?> '.$select_checked.'>'.$option_name.'</option>';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
$field_temp= str_replace("{select_option}",$checkbox_option,$field_temp);
|
||||
return $field_temp;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user