Метод Laravel Illuminate\Validation\Validator::validateUsername не существует

Когда я пытаюсь отправить форму и проверить ее, я получаю следующее сообщение об ошибке:

Метод Illuminate\Validation\Validator::validateUsername не существует.

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\LoginRequest;
use App\Http\Requests\RegisterRequest;
use App\Models\User;
use http\Env\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;

class AuthController extends Controller



{
    public function register(RegisterRequest $request)
    {
        $data = $request->validated();
        /** @var \App\Models\User $user */
        $user = User::create([
            'username' => $data['username'],
            'password' => bcrypt($data['password']),
        ]);

        $token = $user->createToken('main')->plainTextToken;
        return response(compact('user', 'token'));
    }

    public function login(LoginRequest $request)
    {
        $credentials = $request->validated();
        if (!Auth::attempt($credentials)) {
            return response([
                'message' => 'Provided username or password is incorrect'
            ], 422);
        }

        /** @var \App\Models\User $user */
        $user = Auth::user();
        $token = $user->createToken('main')->plainTextToken;
        return response(compact('user', 'token'));
    }

    public function logout(Request $request)
    {
        /** @var \App\Models\User $user */
        $user = $request->user();
        $user->currentAccessToken()->delete();
        return response('', 204);
    }
}

Я уже использовал эту команду composer dump-autoload для перезагрузки методов, но это не сработало

Вот мой запрос на вход

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;


class LoginRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, mixed>
     */
    public function rules()
    {
        return [
            'username' => 'required|username|string|exists:users,username',
            'password' => [
                'required',
            ],
            'remember' => 'boolean'
        ];
    }
}

Я думаю, что-то не так в правиле имени пользователя Спасибо за ответы ребята :D

Удалите правило username из вашего App\Http\Requests\LoginRequest.

jrcamatog 08.05.2023 11:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
1
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

опубликуйте содержимое ваших App\Http\Requests\LoginRequest и App\Http\Requests\RegisterRequest. Ошибка показывает, что вы использовали пользовательское правило с именем username, которое не определено.

Редактировать: Вы использовали пользовательское правило «имя пользователя», которое вы, вероятно, не определяли. Удалите правило после слова «требуется» или определите его.

/**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, mixed>
     */
    public function rules()
    {
        return [
            // Change this
            'username' => 'required|username|string|exists:users,username',
            // To this.
            'username' => 'required|string|exists:users,username',
            'password' => [
                'required',
            ],
            'remember' => 'boolean'
        ];
    }

Однако, если вы определили пользовательское правило username, убедитесь, что вы сделали это правильно. Например, поместите следующее в ваш сервис-провайдер.

use Illuminate\Support\Facades\Validator;

public function boot()
{
    Validator::extend('username', function ($attribute, $value, $parameters, $validator) {
        // Custom validation logic goes here
        // Return true if the validation passes, false otherwise
    });
}

выложил спасибо за ответ

Lucbudo 08.05.2023 11:54

Другие вопросы по теме