验证唯一 php,thinkphp5编辑时验证唯一如何解决?

本篇文章给大家带来的内容是关于thinkphp5编辑时验证唯一如何解决? 有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

若定义了相关的验证规则,如: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要和主键同名)。如:

1df0e58db58387a5481279be380ba6c7.pngpublic 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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值