若定義了相關的驗證規則,如:
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教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答