资讯专栏INFORMATION COLUMN

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

ernest.wang / 3450人阅读

摘要:然而在编辑修改的页面验证时,提交自身数据会提示数据重复。解决方法在编辑页面表单把主键也作为数据传入到验证器中要和主键同名。

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

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://www.ucloud.cn/yun/29519.html

相关文章

  • ThinkPHP5踩过的坑

    摘要:函数在框架初始化方法中无效当初做权限控制在判断是否有权限如果无权限就执行跳转跳转的函数是但是无论如何都无法跳转出去当时的版本是手册还不太完善后来得知必须得才可以跳转重定向完整代码分页参数的问题如果是普通分页没毛病但是分页后面有其他参数比 01:redirect函数在框架初始化方法中无效当初做权限控制,在initialize判断是否有权限,如果无权限就执行跳转,跳转的函数是redirec...

    enali 评论0 收藏0
  • 基于ThinkPHP5拿来即用高性能后台管理系统

    摘要:数据库文件已经上传,安装配置就可以使用简称即基于的后台管理系统官方文档地址在线体验地址账户密码线上仓库在线地址源代码下载克隆直接下载本地部署运行环境要求建议配置虚拟域名若不清楚,请自行解决之,方便接下来开展你的开发工作。 喜欢就Star,不只是Fork; 想要分享的动机才是驱动力,而技术仅仅是一种方法。 数据库文件已经上传,安装配置就可以使用 showImg(https://seg...

    894974231 评论0 收藏0
  • 基于ThinkPHP5拿来即用高性能后台管理系统

    摘要:数据库文件已经上传,安装配置就可以使用简称即基于的后台管理系统官方文档地址在线体验地址账户密码线上仓库在线地址源代码下载克隆直接下载本地部署运行环境要求建议配置虚拟域名若不清楚,请自行解决之,方便接下来开展你的开发工作。 喜欢就Star,不只是Fork; 想要分享的动机才是驱动力,而技术仅仅是一种方法。 数据库文件已经上传,安装配置就可以使用 showImg(https://seg...

    SHERlocked93 评论0 收藏0
  • 基于ThinkPHP5拿来即用高性能后台管理系统

    摘要:数据库文件已经上传,安装配置就可以使用简称即基于的后台管理系统官方文档地址在线体验地址账户密码线上仓库在线地址源代码下载克隆直接下载本地部署运行环境要求建议配置虚拟域名若不清楚,请自行解决之,方便接下来开展你的开发工作。 喜欢就Star,不只是Fork; 想要分享的动机才是驱动力,而技术仅仅是一种方法。 数据库文件已经上传,安装配置就可以使用 showImg(https://seg...

    LiuRhoRamen 评论0 收藏0
  • TP-admin即基于ThinkPHP5拿来即用高性能后台管理系统

    摘要:即基于拿来即用高性能后台管理系统官方文档地址在线体验地址账户密码线上仓库在线地址源代码下载克隆直接下载本地部署运行环境要求建议配置虚拟域名若不清楚,请自行解决之,方便接下来开展你的开发工作。 新版本在线体验地址已经上线,欢迎体验? ---2017-01-14 喜欢就Star,不只是Fork; 想要分享的动机才是驱动力,而技术仅仅是一种方法。 ====================...

    Hydrogen 评论0 收藏0

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<