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>') !!}

在这个跨度中,它什么都不显示,但在常见错误消息区域中,它显示抱歉表单无法更新。。。那么,我如何正确验证字段并显示相关的错误消息

这样做:

根据插入请求使用

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

根据更新请求使用

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

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

您将$request->all((作为验证消息传递。请尝试:

$website = $websiteModel->find($id);
$request->validate([
'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)
],
]);

您不需要在ignore规则中传递重复列来指示验证器忽略网站域吗?例如像

Rule::unique('apps')->ignore($website->id)

请试试这个。它有助于解决您的问题

在文件顶部使用异常和验证器

use Exception;
use Validator;

$rules = [
'subDomainName' => 'required|unique:sub_domain_name',
];
$validator = Validator::make($request->all(), $rules, $message);
if ($validator->fails()) {
throw new Exception(implode('n', $validator->errors()->all()));
}

sub_domain_name:这是数据库列名

相关内容

  • 没有找到相关文章

最新更新