美文网首页
ThinkPHP 5.1 控制器editData统一处理增删改数

ThinkPHP 5.1 控制器editData统一处理增删改数

作者: YEYU2001 | 来源:发表于2019-04-06 16:31 被阅读0次

    思路是模态窗体负责数据的添加、更新和删除数据;第一步,根据模块不同通过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">&times;</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);
            }
        }
    

    相关文章

      网友评论

          本文标题:ThinkPHP 5.1 控制器editData统一处理增删改数

          本文链接:https://www.haomeiwen.com/subject/jvwriqtx.html