为了账号安全,请及时绑定邮箱和手机立即绑定

laravel 中的唯一字段验证问题

laravel 中的唯一字段验证问题

PHP
UYOU 2022-12-30 17:50:30
我正在尝试验证我的 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>') !!}在此跨度中,它只显示常见错误消息区域中的任何内容,它显示抱歉无法更新表单...那么我如何正确验证该字段并显示相关错误消息
查看完整描述

4 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

做这样的事情:


根据插入请求使用


'domain' => [

   ...

   'unique:websites,domain'

]

根据更新请求使用


'domain' => [

   ...

   "unique:websites,domain,{$this->website->id}"

]

要么


'domain' => [

   ...

   Rule::unique('websites', 'domain')->ignore($this->website)

]


查看完整回答
反对 回复 2022-12-30
?
www说

TA贡献1775条经验 获得超8个赞

您不需要在 ignore Rule 中传递重复的列来指示验证器忽略网站域,除了它自己吗?例如像

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


查看完整回答
反对 回复 2022-12-30
?
慕沐林林

TA贡献2016条经验 获得超9个赞

您将 $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)

            ],

        ]);


查看完整回答
反对 回复 2022-12-30
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

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


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


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 :这是数据库列名


查看完整回答
反对 回复 2022-12-30
  • 4 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信