Missing required parameter for Route
Распространённая проблема "Missing required parameter for Route", но у меня она немного иная, решение которой я просто никак не могу найти:
Вот мои связанные роуты:
Route::get('/monitoring/{monitoring}/edit', [HistoryController::class, 'edit'])->name('monitoring.edit');
Route::patch('/monitoring/{monitoring}', [HistoryController::class, 'update'])->name('monitoring.update');
обычный роут апдейта по документации laravel
Вот нужная часть контроллера:
public function edit(History $history) {
return view('monitoring.edit', compact('history'));
}
public function update(History $history, Request $request) {
$data = $request->validate([
'blablabla1' => 'integer',
'blablabla2' => 'string',
'blablabla3' => 'string',
'blablabla4' => 'string',
]);
dd($data);
}
ну и вьюшка:
<form class="container" action="{{route('monitoring.update', $history)}}" method="post">
@csrf
@method('patch')
...
я ничего не придумывал, просто "следую по учебнику", однако у меня возникает ошибка, которая возникает при отсутствии аргумента - у меня же аргумент явно указывается. Что не так?
Ответы (1 шт):
В web.php заменить имя параметра с monitoring на history:
Route::get('/monitoring/{history}/edit', [HistoryController::class, 'edit'])->name('monitoring.edit');
В HistoryController так:
public function edit(History $history) {
return view('monitoring.edit', compact('history'));
}
Тогда должно всё работать, но если вы говорите что он отдаёт 404, значит у Вас в БД нет такой записи с $history проверьте, существует ли такая запись с переданным ID в БД