tp5 常规项目开发的封装和复用

发布于 2022-09-06 13:11:20 字数 1558 浏览 22 评论 0

在做tp5项目的时候,比如做一个权限编辑的时候,如图图片描述

简单的一个编辑操作,在控制器editC方法中写了好多的代码, 这种操作在项目是比较常见的。一个控制器中写这么多代码,怎么看也不优雅。 怎么对这些代码进行很好的封装,简化控制器中的代码,更好的复用,也让代码更优雅一点,就这段代码而言,怎么进行改进?

public function editC(){
        //获取id,分配旧数据,注意父规则的分配
        $where[$this->pk]=intval($this->request->param('id'));
        $oldData=Db::table('addons_auth_rule')->where($where)->select();
       
        //编辑的父规则,不可以为自身和子规则
        $tmp=Db::table('addons_auth_rule')->select(); //数据库读取整个规则表
        $pid=(new Arr)->unlimited_notchild($tmp,$where[$this->pk],'rid');//根据当前id,查找规则表中的非子类的数据
        $treeParent=(new Arr())->tree($pid,'title','rid');//对数据进行树形处理
        View::share(['oldData'=>$oldData[0],'parent'=>$treeParent]);
        //获取新数据,并入库
        if($this->request->isPost()){
            $data=$this->request->param('','','strip_tags,trim');
            //filedCover 方法,为将表单提交过来的字段名转换为数据库中的字段名
            $data=$this->filedCover($data,['id'=>'rid']);
            //使用验证器进行数据验证
            $check=$this->validation('\aop\validate\Rule',$data,'edit');
            if($check['status']==0){
                $this->error($check['msg']);
            }
            //模型中的编辑方法
            $res=$this->model->edit($data);
            ($res['status']=='success')?$this->success($res['msg'],'listC'):$this->error($res['msg'],'listC');
        }
        return view();
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文