class BaseForm extends CActiveRecord
{
public static function model($className = __CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'base_form';
}
//获取所有表单的信息
public static function getAllForms($page,$pageSize,$args=array()){
$condition = "1=1";
$params = array();
if($args['form_name'] != ''){
$condition .= "AND id=:form_name";
$params['form_name'] = $args['form_name'];
}
$total_rows =Yii::app()->db->createCommand()
->select("*")
->from("base_form")
->where($condition,$params)
->group("id")
->order("record_time")
->queryAll();
$total = count($total_rows);
$rows = Yii::app()->db->createCommand()
->select("*")
->from("base_form")
->where($condition,$params)
->group("id")
->order("record_time")
->limit($pageSize)
->offset($page * $pageSize)
->queryAll();
$list['rows'] = $rows;
$list['total_num'] = $total;
$list['page_num'] = ($page+1);
return $list;
}
//获取指定表单所有元素的信息
public static function getFormElements($formname)
{
$rows = Yii::app()->db->createCommand()
->select("id,filed,key,type,values,required,tip")
->from("base_form")
->order("record_time")
->where("id='{$formname}'")
->queryAll();
return $rows;
}
//创建指定表单
//创建指定表单
public static function createForm($formname,$url){
$rows = self::getFormElements($formname);
//处理select.radio.checkbox选项
foreach($rows as $k=>$v){
if(isset($v['values'])){
$rows[$k]['values'] = explode(',',$v['values']);
}
}
//根据表单元素生成表单
$form = array();
$jsstr = '';
$valstr = '';
$infostr = '';
$datastr = '';
foreach($rows as $v){
switch($v['type']) {
case 'text':
$form[$v['key']] = "<div class='form-group'>
<div class='col-xs-12'>
<input type='text' name='".$v['key']."' class='form-control' id='".$v['key']."'
value='' placeholder='".$v['filed'].":".$v['tip']."' >
</div>
</div>
";
$valstr .= "var ".$v['key']."=$('#".$v['key']."').val();
";
break;
case 'date':
$form[$v['key']] = "<div class='input-group date form_date' id='birth_date' data-date=''
data-date-format='yyyy-mm-dd'>
<span class='input-group-addon'><span class='glyphicon glyphicon-calendar'></span></span>
<input id='".$v['key']."' class='form-control' size='16' type='text'
value='' placeholder='".$v['filed'].":".$v['tip']."'>
</div>
<br />
";
$valstr .= "var ".$v['key']."=$('#".$v['key']."').val();
";
break;
case 'radio':
$str = "<label>".$v['filed']."(".$v['tip'].")".":</label>";
foreach ($v['values'] as $vv) {
$str .= "<div class='radio-inline'>
<label>
<input type='radio' name='".$v['key']."' id='".$v['key']."' value='".$vv."'>".$vv."
</label>
</div>
";
}
$str .= "<br />";
$form[$v['key']] = $str;
$valstr .= "var ".$v['key']."=$('input:radio[name=\"".$v['key']."\"]:checked').val();
";
break;
case 'checkbox':
$str = "<label>".$v['filed']."(".$v['tip'].")".":</label>";
foreach ($v['values'] as $vv) {
$str .= "<div class='checkbox-inline'>
<label>
<input type='checkbox' name='".$v['key']."' id='".$v['key']."' value='".$vv."'>".$vv."
</label>
</div>
";
}
$str .= "<br />";
$form[$v['key']] = $str;
$valstr .= "var ".$v['key']."=[];
$(\"input[name='".$v['key']."']:checked\").each(function(){
".$v['key'].".push($(this).val());
});
";
break;
case 'select':
$str = "<div>
<label>".$v['filed']."(".$v['tip'].")".":</label>
<select class='form-control' id='".$v['key']."'>";
foreach ($v['values'] as $vv) {
$str .= "<option>".$vv."</option>
";
}
$str .= "</select>
</div>
";
$str .= "<br />";
$form[$v['key']] = $str;
$valstr .= "var ".$v['key']."=$('select option:selected').text();
";
break;
case 'hidden':
$form[$v['key']] = "<label>".$v['filed']."(".$v['tip'].")".":</label>
<div class='form-group'>
<div class='col-xs-12'>
<input type='hidden' name='".$v['key']."' class='form-control' id='".$v['key']."' value='' >
<img src='images/game/".$v['id']."/upload.jpg' width='100%' id='upload' />
</div>
</div>
";
$valstr .= "var ".$v['key']."=$('#img').val();
";
break;
default:
'无法生成表单';
break;
}
//必填项
if($v['required'] == '1'){
$infostr .= "if(!".$v['key']."){
flag=false;
$('#".$v['key']."').after('<span class=\"help-block text-info\"style=\"padding:0px;margin:0px;\">".$v['filed']."不能为空!</span>');}
";
}
$datastr .= $v['key'] . ":" . $v['key'] . ",";
}
$datastr = $datastr."formname:'".$formname."'";
$jsstr = "function to_submit(obj){
$('.help-block').remove();
$(obj).button('loading');
var flag=true;
".$valstr.$infostr."
if(flag){
$.ajax({
type: 'post',
url: '".$url."',
dataType:'json',
data:{".$datastr."},
success: function(data, textStatus){
alert(data.msg);
if(data.status==0){
window.location.reload();
}
},
error: function(){
alert('请求失败');
},
complete:function(){
$(obj).button('reset');
}
});
}else{
$(obj).button('reset');
}
}";
$form['to_submit_js'] = $jsstr;
$form['formname'] = $formname;
return $form;
}
}
{
public static function model($className = __CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'base_form';
}
//获取所有表单的信息
public static function getAllForms($page,$pageSize,$args=array()){
$condition = "1=1";
$params = array();
if($args['form_name'] != ''){
$condition .= "AND id=:form_name";
$params['form_name'] = $args['form_name'];
}
$total_rows =Yii::app()->db->createCommand()
->select("*")
->from("base_form")
->where($condition,$params)
->group("id")
->order("record_time")
->queryAll();
$total = count($total_rows);
$rows = Yii::app()->db->createCommand()
->select("*")
->from("base_form")
->where($condition,$params)
->group("id")
->order("record_time")
->limit($pageSize)
->offset($page * $pageSize)
->queryAll();
$list['rows'] = $rows;
$list['total_num'] = $total;
$list['page_num'] = ($page+1);
return $list;
}
//获取指定表单所有元素的信息
public static function getFormElements($formname)
{
$rows = Yii::app()->db->createCommand()
->select("id,filed,key,type,values,required,tip")
->from("base_form")
->order("record_time")
->where("id='{$formname}'")
->queryAll();
return $rows;
}
//创建指定表单
//创建指定表单
public static function createForm($formname,$url){
$rows = self::getFormElements($formname);
//处理select.radio.checkbox选项
foreach($rows as $k=>$v){
if(isset($v['values'])){
$rows[$k]['values'] = explode(',',$v['values']);
}
}
//根据表单元素生成表单
$form = array();
$jsstr = '';
$valstr = '';
$infostr = '';
$datastr = '';
foreach($rows as $v){
switch($v['type']) {
case 'text':
$form[$v['key']] = "<div class='form-group'>
<div class='col-xs-12'>
<input type='text' name='".$v['key']."' class='form-control' id='".$v['key']."'
value='' placeholder='".$v['filed'].":".$v['tip']."' >
</div>
</div>
";
$valstr .= "var ".$v['key']."=$('#".$v['key']."').val();
";
break;
case 'date':
$form[$v['key']] = "<div class='input-group date form_date' id='birth_date' data-date=''
data-date-format='yyyy-mm-dd'>
<span class='input-group-addon'><span class='glyphicon glyphicon-calendar'></span></span>
<input id='".$v['key']."' class='form-control' size='16' type='text'
value='' placeholder='".$v['filed'].":".$v['tip']."'>
</div>
<br />
";
$valstr .= "var ".$v['key']."=$('#".$v['key']."').val();
";
break;
case 'radio':
$str = "<label>".$v['filed']."(".$v['tip'].")".":</label>";
foreach ($v['values'] as $vv) {
$str .= "<div class='radio-inline'>
<label>
<input type='radio' name='".$v['key']."' id='".$v['key']."' value='".$vv."'>".$vv."
</label>
</div>
";
}
$str .= "<br />";
$form[$v['key']] = $str;
$valstr .= "var ".$v['key']."=$('input:radio[name=\"".$v['key']."\"]:checked').val();
";
break;
case 'checkbox':
$str = "<label>".$v['filed']."(".$v['tip'].")".":</label>";
foreach ($v['values'] as $vv) {
$str .= "<div class='checkbox-inline'>
<label>
<input type='checkbox' name='".$v['key']."' id='".$v['key']."' value='".$vv."'>".$vv."
</label>
</div>
";
}
$str .= "<br />";
$form[$v['key']] = $str;
$valstr .= "var ".$v['key']."=[];
$(\"input[name='".$v['key']."']:checked\").each(function(){
".$v['key'].".push($(this).val());
});
";
break;
case 'select':
$str = "<div>
<label>".$v['filed']."(".$v['tip'].")".":</label>
<select class='form-control' id='".$v['key']."'>";
foreach ($v['values'] as $vv) {
$str .= "<option>".$vv."</option>
";
}
$str .= "</select>
</div>
";
$str .= "<br />";
$form[$v['key']] = $str;
$valstr .= "var ".$v['key']."=$('select option:selected').text();
";
break;
case 'hidden':
$form[$v['key']] = "<label>".$v['filed']."(".$v['tip'].")".":</label>
<div class='form-group'>
<div class='col-xs-12'>
<input type='hidden' name='".$v['key']."' class='form-control' id='".$v['key']."' value='' >
<img src='images/game/".$v['id']."/upload.jpg' width='100%' id='upload' />
</div>
</div>
";
$valstr .= "var ".$v['key']."=$('#img').val();
";
break;
default:
'无法生成表单';
break;
}
//必填项
if($v['required'] == '1'){
$infostr .= "if(!".$v['key']."){
flag=false;
$('#".$v['key']."').after('<span class=\"help-block text-info\"style=\"padding:0px;margin:0px;\">".$v['filed']."不能为空!</span>');}
";
}
$datastr .= $v['key'] . ":" . $v['key'] . ",";
}
$datastr = $datastr."formname:'".$formname."'";
$jsstr = "function to_submit(obj){
$('.help-block').remove();
$(obj).button('loading');
var flag=true;
".$valstr.$infostr."
if(flag){
$.ajax({
type: 'post',
url: '".$url."',
dataType:'json',
data:{".$datastr."},
success: function(data, textStatus){
alert(data.msg);
if(data.status==0){
window.location.reload();
}
},
error: function(){
alert('请求失败');
},
complete:function(){
$(obj).button('reset');
}
});
}else{
$(obj).button('reset');
}
}";
$form['to_submit_js'] = $jsstr;
$form['formname'] = $formname;
return $form;
}
}