思路是模态窗体负责数据的添加、更新和删除数据;第一步,根据模块不同通过Ajax取回html的表单内容;第二步,再向数据库取回表单数据(ajax);第三步点击按钮根据不同的增删改类别通过ajax进行处理(editData)
统一的模态窗体html代码如下:
<!-- 模态框 Modal -->
<div class="modal fade" id="myModal" name="" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="">
<div class="modal-dialog" id="moType" name="" style="top:60px;">
<div class="modal-content" id="moID" name="">
<!-- 模态窗口头部 -->
<div id="moHeader" class="modal-header" style="background:#f0ad4e;">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="moLabel" style="color:#FFFFFF;font-weight:bold;">1111</h4>
</div>
<p id="validate_info" class="alert alert-warning" role="alert" hidden="hidden"></p>
<!-- 表单 Form -->
<!-- <form id="moForm" name="moForm" action="#" onsubmit="ajaxSubmit(this);return false;" method="post" accept-charset="UTF-8"> -->
<form id="moForm" name="moForm" action="#" onsubmit="" method="post" accept-charset="UTF-8">
<!-- 模态窗口身部分 -->
<div class="modal-body" id="AjaxModal" style="margin-top:0px;">
<!-- Ajax动态加载Modal部分 -->
</div>
<!-- 共同隐藏区域 -->
<input type="hidden" id="__type__" name="__type__" value="" />
<!-- 模态窗口底部 -->
<div class="modal-footer" style="background:#eee;margin-top:-5px;height:60px;">
<button type="button" class="btn btn-default" data-dismiss="modal" style="margin-top:-7px;">取消</button>
<button type="submit" class="btn btn-success" id="submitInput" style="margin-top:-7px;" onclick="ajaxSubmit();return false;">确定提交</button>
</div>
</form>
<!-- 表单 Form -->
</div>
</div>
</div>
需要注意的是,必须在modal.html(即上面代码中)增加一个统一隐藏域用于存储处理数据的类别,新增(Add)、更新(Edit)还是删除(Del);这个隐藏域必须是在本页中,不能通过取回表单时再进行更新,因为在打开模态窗体时就已经知道了具体类别,加之模态窗体是负责整个APP的数据处理的,有可能当前的里面form表单是上一个模块的——必须要重新通过ajax取回的,因此必须要先能够设置该值,以便后续向控制器传递form表单参数有此值:
<!-- 共同隐藏区域 -->
<input type="hidden" id="__type__" name="__type__" value="" />
根据表单传递的Request::param('type')值进行分类处理:
// 更新版本信息
public function editData() {
// 待返回的数组
$data = array();
// 只处理Ajax请求
if (request()->isAjax()) {
// 执行验证客户提交的数据
$validate = new \app\admin\validate\Version;
// 如果验证不通过返回到控制器
if ($validate->check(request()->param())) {
// 创建模型对象
$version = new \app\admin\model\Version;
// 按照类别进行不同处理
switch (Request::param('__type__')) {
case 'New':
$info = $version->allowField(true)->save(request()->param());
if ($info) {
$data['msg'] = "添加成功";
// 将添加记录的结果发送出去
send_code('10486675@qq.com', '夜雨', 'ABLE软件版本更新 V' . Request::param('version'), 'ABLE系统更新内容为:' . Request::param('note'), "V" . Request::param('version'), false);
}
break;
case 'Edit':
$info = $version->allowField(true)->save(request()->param(), ['id' => Request::param('id')]);
if ($info) {$data['msg'] = "更新成功";} else { $data['msg'] = "更新失败或者因数据无变化没有实际更新";}
break;
case 'Del':
$info = $version->where('id', Request::param('id'))->update(['status' => 0]);
if ($info) {$data['msg'] = "删除成功";} else { $data['msg'] = "删除失败";}
break;
default:
$data['msg'] = "因表单类别错误不做任何处理";
break;
}
} else {
$data['msg'] = "数据验证未通过:" . $validate->getError();
}
// 返回字符串
return json($data);
}
}
网友评论