若定义了相关的验证规则,如:
namespace app/seller/validate;use think/Validate;html' target='_blank'>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; }
以上就是thinkphp5编辑时验证唯一如何解决?的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答