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 в БД

→ Ссылка