Подтвердить что ты не робот

Undefined Метод в запросе:: all()

Я попробую начать руководство от Laravel.com.

Существует глава Создание задачи. Существует $request параметр обратного вызова, а в функции $request->all() используется для получения GET-параметров. Но если я выполню этот обратный вызов, я получаю сообщение об ошибке

Неустранимая ошибка: вызов метода undefined Illuminate\Support\Facades\Request:: all()

Вот мой код:

Route::post('/task', function(Request $request) {

    $validator = Validator::make($request->all(), [
        'name' => 'required|max:255',
    ]);

    if($validator->fails())
        redirect('/')->withInput()->withErrors($validator);

    $task = new Task();
    $task->name = $request['name'];
    $task->save();

    return redirect('/');
});
4b9b3361

Ответ 1

В функции контроллера вводится экземпляр Illuminate\Support\Facades\Request, который пересылает только статические вызовы в основной запрос.

Чтобы исправить это, вам необходимо импортировать базовый класс запроса, чтобы он был введен правильно. Добавьте вверху вашего файла routes.php следующее:

use Illuminate\Http\Request;

или просто вызовите Request:: all() вместо $request- > all().

Ответ 2

Поскольку этот код находится в файле route.php, который не помещается в имена, объект Request, который вводится в ваше закрытие, является фасадом Request, а не объектом Illuminate\Http\Request. Фасад Request не имеет метода all().

Измените свой код на:

Route::post('/task', function(\Illuminate\Http\Request $request) {
    // code
});

Примечание. Обычно вы не полностью квалифицируете объект Request в методах контроллера, потому что контроллеры обычно добавляют use Illuminate\Http\Request; вверху. Вот почему определение вашей функции в файле маршрутов может выглядеть немного иначе, чем определение метода контроллера.

Вы можете проверить этот ответ за небольшую дополнительную информацию.