Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann das Problem der eindeutigen Überprüfung beim Bearbeiten in thinkphp5 gelöst werden?

Wie kann das Problem der eindeutigen Überprüfung beim Bearbeiten in thinkphp5 gelöst werden?

不言
不言nach vorne
2018-10-16 15:45:133005Durchsuche

本篇文章给大家带来的内容是关于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要和主键同名)。如:

Wie kann das Problem der eindeutigen Überprüfung beim Bearbeiten in thinkphp5 gelöst werden?

 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;
        }
    }

Das obige ist der detaillierte Inhalt vonWie kann das Problem der eindeutigen Überprüfung beim Bearbeiten in thinkphp5 gelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen