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('/');
});
Ответы
Ответ 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;
вверху. Вот почему определение вашей функции в файле маршрутов может выглядеть немного иначе, чем определение метода контроллера.
Вы можете проверить этот ответ за небольшую дополнительную информацию.