Метод создания валидатора Laravel 9 не работает

Я написал этот код в контроллере как действие формы:

public function submitAsk(Request $request)
    {
        $rules = [
            'title' => 'required|max:255',
            'description' => 'required|max:1000',
            'category' => 'required',
            'tags' => 'required',
        ];

        $messages = [
            'required' => ':attribute can not be empty'
        ];

        $validator = Validator::make($request, $rules, $messages);

        if ($validator->fails()) {
            return redirect('questions/ask')
                ->withErrors($validator)
                ->withInput();
        }

        ...
    }

Но я получаю эту ошибку:

Illuminate\Validation\Factory::make(): Аргумент #1 ($data) должен иметь тип array, Illuminate\Http\Request задан, вызывается в C:\projectname\vendor\laravel\framework\src\Illuminate\Support\ Facades\Facade.php в строке 338

Как я могу решить эту проблему?

laravel.com/docs/9.x/validation#manually-creating-validators не помогает?
brombeer 01.01.2023 11:04

Ну, вы передаете $request напрямую вместо $request->all()

xenooooo 01.01.2023 11:06

@brombeer я просто скопировал и вставил код оттуда, так что это означает, что это не помогает

Pouya 01.01.2023 11:08

«Я просто скопировал и вставил код оттуда», держу пари, что вы этого не сделали. В каждом примере на этой странице используется $request->all()

brombeer 01.01.2023 11:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

У вас просто проблема с синтаксисом:

Вы должны передать массив $request->all(), а не $request instance

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

Ссылка: https://laravel.com/docs/9.x/validation#manually-creating-validators

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