zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    对于想用OS但又觉得单片机资源太过紧张,状态机是个不错的选择分享一种状态机设计方法
    状态机实践入门
    Codewarrior 调试错误ILLEGAL_BP
    坑爹的AVR编译器中文路径问题
    跨入AVR
    atmega8 例程:USART串口通信
    2011总结
    atmega8 默认内部RC振荡 + 解锁
    关于AVR I/O 的驱动能力的介绍
    atmega8 例程:系统库函数的延迟
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9964574.html
Copyright © 2011-2022 走看看