首页 > 解决方案 > laravel 中的唯一字段验证问题

问题描述

我正在尝试验证我的 laravel 应用程序中的唯一条目

以下是我的验证数组,

$website = $websiteModel->find($id);

        $this->validate($request, [
            'subDomainName' => ['required','regex:/^[A-Za-z0-9 ]+$/'],
            'subDomainSuffix' => ['required'], 
            'packageType' => ['required'],
            'themeid' => ['required'],
            'lang' => ['required'],
            'user' => ['required'],
            'domain' => [
                'required',
                'string',
                'min:2',
                'max:255',
                Rule::unique('apps')->ignore($website)
            ],
        ], $request->all());

我的验证工作正常但是,

当我尝试为我的域字段输入重复值时,它得到正确验证但没有显示错误消息,说对不起名称已经存在......

<input type="text" id="domain" class="form-control" name="domain" >
{!! $errors->first('domain', '<span class="help-block" role="alert">:message</span>') !!}

在此范围内,它什么都不显示,但在常见错误消息区域中显示对不起表单无法更新...那么我如何正确验证该字段并显示相关错误消息

标签: phplaravelvalidationlaravel-5laravel-6

解决方案


Do something like this:

On insert request use

'domain' => [
   ...
   'unique:websites,domain'
]

On update request use

'domain' => [
   ...
   "unique:websites,domain,{$this->website->id}"
]

Or

'domain' => [
   ...
   Rule::unique('websites', 'domain')->ignore($this->website)
]

推荐阅读