Функция удаления не работает с контроллером

#laravel

Вопрос:

Привет, парень мой, я только что написал удаление для своего проекта, это выглядит так:

 public function projectdelete(Project $project)
{
    $project->delete();
    return back();
}
 

Моя форма :

 <form action="{{route('project.delete',$project )}}"
    method="POST" 
    onsubmit="return confirm('Are you sure you want to delete the project?')">
    @csrf
    @method('DELETE')
    <button type="submit">Submit</button>
</form>
 

Маршрут:

 Route::delete('/dashboard/project/create/{id}', [
    DashboardController::class, 'projectdelete'
])->name('project.delete');
 

Почему он не удаляется?

Ответ №1:

Проблема в параметре, ваш параметр маршрута {id} , на контроллере вы используете привязку модели, для привязки модели имя параметра маршрута должно совпадать с вашей моделью {project} :

 Route::delete('/dashboard/project/create/{project}', [
    DashboardController::class, 'projectdelete'
])->name('project.delete');
 

Комментарии:

1. @m0n0l0g Если вы были рады, что ответ решил вашу проблему, пожалуйста, отметьте его как принятый. Вы можете сделать это, щелкнув галочку / галочку под счетом.

Ответ №2:

В файле блейда передайте параметр проекта как, project а также routes укажите имя параметра как project :

Моя форма :

 <form action="{{route('project.delete', ['project' => $project])}}" method="POST" onsubmit="return confirm('Are you sure you want to delete the project?')">
    @csrf
    @method('DELETE')
    <button type="submit">Submit</button>
</form>
 

Маршрут:

 Route::delete('/dashboard/project/create/{project}', [DashboardController::class, 'projectdelete'])->name('project.delete');