首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel-9:方法Illuminate\Validation\Validator::validateUsername不存在

Laravel-9:方法Illuminate\Validation\Validator::validateUsername不存在
EN

Stack Overflow用户
提问于 2022-08-06 05:47:36
回答 1查看 1.1K关注 0票数 0

我在laravel添加了用户名字段并注册了一个用户,这很好,但是当我尝试用用户名登录时,用用户名代替电子邮件,而不是出现这个错误:

代码语言:javascript
复制
  Method Illuminate\Validation\Validator::validateUsername does not exist

表格代码:

代码语言:javascript
复制
   <div class="mt-4">
            <x-label for="username" :value="__('Username')" />

            <x-input id="username" class="block mt-1 w-full" type="username" name="username" :value="old('username')" required autofocus />
        </div>

模型:

代码语言:javascript
复制
   protected $fillable = [
    'name',
    'username',
    'email',
    'password',
];

RegisteredUserController:

代码语言:javascript
复制
   public function store(Request $request)
{
    $request->validate([
        'name' => ['required', 'string', 'max:255'],
        'username' => ['required', 'string', 'max:255', 'unique:users'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'confirmed', Rules\Password::defaults()],
    ]);

    $user = User::create([
        'name' => $request->name,
        'username' => $request->username,
        'email' => $request->email,
        'password' => Hash::make($request->password),
    ]);

loginrequest.php

代码语言:javascript
复制
  public function authenticate()
{
    $this->ensureIsNotRateLimited();

    if (! Auth::attempt($this->only('username', 'password'), $this->boolean('remember'))) {
        RateLimiter::hit($this->throttleKey());

        throw ValidationException::withMessages([
            'username' => trans('auth.failed'),
        ]);
    }

    RateLimiter::clear($this->throttleKey());
}

有谁能建议我为什么会犯这个错误,或者怎么纠正它。

EN

回答 1

Stack Overflow用户

发布于 2022-08-06 07:23:00

Validator中添加RegisteredUserController类,如下所示:

代码语言:javascript
复制
use Validator;

在存储函数中更改用户名验证:

代码语言:javascript
复制
  public function store(Request $request)
{
    $request->validate([
        'name' => ['required', 'string', 'max:255'],
        'username' => ['required', 'string', 'max:255', 'unique:users,username'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
        'password' => ['required', 'confirmed', Rules\Password::defaults()]
    ]);

    $user = User::create([
        'name' => $request->name,
        'username' => $request->username,
        'email' => $request->email,
        'password' => Hash::make($request->password)
    ]);

我只是在其验证行的末尾添加了username

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73257469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档