• thinkphp5 编辑时 唯一验证 解决办法


    若定义了相关的验证规则,如:

    
    namespace appsellervalidate;
    use thinkValidate;
    class Goodsmtag extends Validate
    {
        protected $rule = [
            'name'  =>  'require|max:25|unique:goodsmtag',
            'sort'  =>  'require|number|unique:goodsmtag',
            'pic'   =>  'require',
        ];
    
        protected $message  =   [
            'name.require' => '类别名称必须填写',
            'name.max' => '类别名称长度不得大于25位',
            'name.unique' => '类别名称不得重复',
            'sort.require' => '排序数字必须填写',
            'sort.number' => '排序必须为数字',
            'sort.unique' => '排序数字不得重复',
            'img.require' => '必须上传图片',
        ];
    
        protected $scene = [
            'add'  =>  [
                'name'=>'require|max:25|unique:goodsmtag',
                'sort'=>'require|number|unique:goodsmtag',
                'img'=>'require',
            ],
            'edit'  =>  [
                'name'=>'require|max:25|unique:goodsmtag',
                'sort'=>'require|number|unique:goodsmtag',
            ],
        ];
    }
    

    在添加界面验证的时候,提交自身的数据验证正常。
    然而在编辑修改的页面验证时,提交自身数据会提示数据重复。

    解决方法:
    在编辑页面表单把主键id也作为数据传入到验证器中(name要和主键同名)。如:

    
     public function editOne($id){
            $data = [
                'name' => input('name'),
                'isshow' => $_POST['isshow'],
                'create_time' => time(),
                'sort' => input('sort'),
                'id' => input('id')
            ];
            $file = request()->file('pic');
            if($file){
                $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
                if($info){
                    $img_src = '/uploads/'.$info->getSaveName();
                    $img_src = str_replace('\','/',$img_src);
                    $data['img'] = $img_src;
                }
            }else{
                $old = $this->getOneById($id);
                $data['img'] = $old['img'];
            }
            $validate = 	hinkLoader::validate('Goodsmtag');
            if(!$validate->scene('edit')->check($data)){
                return $validate->getError();
            }else{
                $res = db("goodsmtag")->where("id=$id")->update($data);
                if($res)
                    return true;
                else
                    return false;
            }
        }
    

    原文地址:https://segmentfault.com/a/1190000016697061

  • 相关阅读:
    winform 异步更新ui
    定时器的写法 winform
    延迟加载
    使用VS分析程序性能
    win7 C/C++,QT安装环境总结
    论文总结
    天舟一号
    硬盘 SMART 检测参数详解[转]
    碧桃花
    在C的头文件中定义的结构体,如何在cpp文件中引用
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9964574.html
Copyright © 2020-2023  润新知