表单验证器唯一用户名失败[重复]

Posted

技术标签:

【中文标题】表单验证器唯一用户名失败[重复]【英文标题】:Form validator unique username fails [duplicate] 【发布时间】:2021-02-25 18:02:51 【问题描述】:

我在检测唯一用户名时遇到了困难。我的意思是它确实可以检测用户名,但如果请求输入的用户名与数据库中的用户当前用户名匹配,我想排除用户名验证。

目前,我得到:用户名已被使用。尽管它与该用户在数据库中的用户名相同。

谢谢!

规则

    protected $rules = [
        'username'  => 
 'nullable|string|alpha_dash|max:255|regex:/(^([a-zA-Z]+)(\d+)?$)/u|unique:users',
        'first_name' => 'nullable|max:150',
     'last_name' => 'nullable|max:150', 
      'location' => 'nullable|max:200', 
      'password' => 'confirmed'
    ];

编辑个人资料 POST 方法:


$validator = Validator::make($request->all(), $this->rules);

        if ($validator->fails()) 
            return \redirect()->back()->withErrors($validator->getMessageBag()->toArray())->withInput($request->except('image'));
         else 
            $model = \App\User::find(\Auth::user()->id);

【问题讨论】:

***.com/questions/22405762/… 这能回答你的问题吗? Laravel update model with unique validation rule for attribute 【参考方案1】:

更新时您可以忽略该字段:

'username'  => 
 'nullable|string|alpha_dash|max:255|regex:/(^([a-zA-Z]+)(\d+)?$)/u|unique:users,' . $user->id,

或者,

'username' => [
   'nullable',
   'string',
   Rule::unique('users')->ignore($user->id),
],

您可以将不同的列名作为第二个参数传递给唯一方法:

Rule::unique('users', 'username')->ignore($user->id),

您还可以通过使用 where 方法自定义查询来指定其他查询约束。例如:

Rule::unique('users')->where(function ($query) 
    return $query->where('username', '!=',  $request->username);
)

【讨论】:

@Nish 这是另一个错误,你可以通过laracasts.com/discuss/channels/laravel/…解决它

以上是关于表单验证器唯一用户名失败[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果验证失败,如何停止表单提交[重复]

表单验证失败后向下滚动到表单

Django 表单验证失败 - pytz 和选择

数据当用户在验证失败(Python,Django)时被重定向回表单时如何保留表单?

验证失败时阻止表单提交(Angular Material)

具有唯一字段的 Laravel 验证服务