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

思路是模态窗体负责数据的添加、更新和删除数据;第一步,根据模块不同通过Ajax取回html的表单内容;第二步,再向数据库取回表单数据(ajax);第三步点击按钮根据不同的增删改类别通过ajax进行处理(editData)

统一的模态窗体html代码如下:



需要注意的是,必须在modal.html(即上面代码中)增加一个统一隐藏域用于存储处理数据的类别,新增(Add)、更新(Edit)还是删除(Del);这个隐藏域必须是在本页中,不能通过取回表单时再进行更新,因为在打开模态窗体时就已经知道了具体类别,加之模态窗体是负责整个APP的数据处理的,有可能当前的里面form表单是上一个模块的——必须要重新通过ajax取回的,因此必须要先能够设置该值,以便后续向控制器传递form表单参数有此值:



根据表单传递的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('[email protected]', '夜雨', '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统一处理增删改数据)