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


namespace app\seller\validate;
use think\Validate;
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 = \think\Loader::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

thinkphp5 编辑时 唯一验证 解决办法的更多相关文章

  1. Android权限管理之Android 6.0运行时权限及解决办法

    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...

  2. PHP编译安装时常见错误解决办法,php编译常见错误

    PHP编译安装时常见错误解决办法,php编译常见错误 1.configure: error: xslt-config not found. Please reinstall the libxslt & ...

  3. excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法

    excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法 office2007应该遇到“向程序发送命令时出现 问题”,设置为以管理员运行也不好用,重装office也不好用,下面介绍下 ...

  4. Win7安装Oracle Instantclient ODBC驱动 后配置DSN时出错的解决办法 SQORAS32

    安装过程简述 oracle官网下载了 instantclient-odbc-nt--.zip instantclient-basic-nt-.zip 我这是32位版的win7,按照需要下载对应的版本. ...

  5. 关于.Net Core 前后端分离跨域请求时 ajax并发请求导致部分无法通过验证解决办法。

    项目中有这样一个页面.页面加载的时候会同时并发6个ajax请求去后端请求下拉框. 这样会导致每次都有1~2个“浏览器预请求”不通过. 浏览器为什么会自动发送“预请求”?请看以面连接 https://b ...

  6. Linux使用curl 方式安装docker-compose 后执行docker-compose version 检查安装是否成功时出错的解决办法

    0x0.缘起: 今天在一台新的Fedora 25上按照官方文档,使用curl方式安装 docker-compose后,验证是否安装成功时出错: 安装时使用的命令为; curl -L https://g ...

  7. Xcode 6.3.2 提交APP(Upload Archive)时崩溃的解决办法

    最近在上传为客户做的APP时,发现Xcode总会在进行到Upload Archive这一步时崩溃,导致APP上载不了.下面说说网上搜索到的几种解决办法. 方法一 亲测有效,很简单: 1.重新打开Xco ...

  8. access数据库select查询top时无效的解决办法

    access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...

  9. mysql ERROR 1045 和2058时(28000): 错误解决办法

    mysql ERROR 1045 (28000): 错误解决办法 听语音 | 浏览:54286 | 更新:2018-02-23 14:34 | 标签:mysql 1 2 3 4 5 6 7 分步阅读 ...

随机推荐

  1. (2016北京集训十三)【xsy1531】魔法游戏 - Nim游戏

    题解: 好题!我的结论很接近正解了... 把一个数化成二进制,每次至少要拿走一位,最多全拿走,不能不拿.那么这就是一个经典的Nim问题了,子树异或起来就是根节点的答案,随便递推一下就行了. 代码: # ...

  2. 51nod-字符串连接

    输入n个字符串s[i],你要把他们按某个顺序连接起来,使得字典序最小. (1 <= n <= 100) (每个字符串长度 <= 100) (字符串只包含小写字母) Input 第一行 ...

  3. [TJOI2015]线性规划

    题目:洛谷P3973.BZOJ3996. 题目大意:给你n,参数b[][]和c[](里面的数均>0),要你求一个数组A[](0/1,1表示选择),已知:1. 若同时选择X和Y,获得B[x][y] ...

  4. tp框架报错 Namespace declaration statement has to be the very first statement in the script

    Namespace declaration statement has to be the very first statement in the script tp框架报这个错误,错误行数就是nam ...

  5. 第九章 Servlet API

    第九章 Servlet API Servlet API 定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨应用服务器的特性,通过使用Servlet API,开发人员不必关心服务 ...

  6. cogs 2170. 大整数取模

    2170. 大整数取模 ★   输入文件:bigint.in   输出文件:bigint.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 输入正整数n和m,输出n mo ...

  7. kqueue演示样例

    网络server通常都使用epoll进行异步IO处理,而开发人员通常使用mac,为了方便开发.我把自己的handy库移植到了mac平台上. 移植过程中,网上竟然没有搜到kqueue的使用样例.让我吃惊 ...

  8. Button的Click事件与js函数的两种不同顺序触发方式

    先运行js.或者先运行Click事件,近期就遇到了这个问题,開始弄了两个button分别运行,那才叫一个蛋疼... 1.先运行js,再运行Button的Click函数 <asp:Button I ...

  9. php在数字前面补0得到固定长度数字的两种方法

    比較基础,事实上两个内置函数都能实现. 1  sprintf 语法: string sprintf(string format, mixed [args]...); 返回值: 字符串 函数种类: 资料 ...

  10. IntelliJ IDEA中JAVA连接MYSQL

    1.下载mysql包 2.项目中引入mysql包 3.连接数据库,查询结果 看jdbc数据库连接类 package Facade; import java.sql.*; /** * Created b ...