美文网首页
ThinkPHP 5.1 封装控制器处理数据editData方法

ThinkPHP 5.1 封装控制器处理数据editData方法

作者: YEYU2001 | 来源:发表于2019-04-13 00:48 被阅读0次

    整体思路是前端页面只通过Ajax向后台控制器的editData方法进行数据的增加、删除和修改的操作——也就是说在每个控制器中都有一个editData方法;考虑到代码重用,99%代码一样,只有创建的两个对象名称不同,因此用update_modal_data($param)函数统一处理模态窗体的增删改!

    /**
     * 统一处理模态窗体的增删改数据
     * @Author   Yeyu2001
     * @DateTime 2019-04-13T00:28:29+0800
     * @param    数组      $param 模态窗体表单传递过来的序列化数据
     * @return   json      将处理数据的结果返回
     */
    function update_modal_data($param) {
    
        // 待返回的数组
        $data = array();
        $Type = ['NEW' => '创建', 'EDIT' => '更新', 'DEL' => '删除'];
    
        // 获取参数
        $flag = strtoupper($param['__type__']);
        $obj = $param['__mark__'];
    
        // 动态变量拼接创建对象
        $model_string = '\app\admin\model\\' . $obj;
        $validate_string = '\app\admin\validate\\' . $obj;
    
        // 创建对象
        $model = new $model_string; // 创建模型对象
        $validate = new $validate_string; // 创建验证对象
    
        // 校验用户数据
        $check = $validate->check($param);
    
        // 校验数据后根据类别处理数据
        if (!$check) {$data['msg'] = $validate->getError();} else {
    
            // 按照类别进行不同处理
            switch ($flag) {
            case 'NEW':
                $info = $model->allowField(true)->save($param);
                break;
            case 'EDIT':
                $info = $model->allowField(true)->save($param, ['id' => $param['id']]);
                break;
            case 'DEL':
                $info = $model->where('id', $param['id'])->update(['status' => 0]);
                break;
            }
    
            // 设定返回结果字符串
            if ($info) {$data['msg'] = $Type[$flag] . "成功";} else { $data['msg'] = $Type[$flag] . "失败";}
        }
    
        // 返回字符串
        return json($data);
    }
    

    在每个控制器的editData方法中只需要调用一条语句就可以完成增删改处理:

    // 统一处理增删改数据
    public function editData() {        
        // 返回处理结果
        return update_modal_data(request()->param());
    }
    

    相关文章

      网友评论

          本文标题:ThinkPHP 5.1 封装控制器处理数据editData方法

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