Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Laravel 8 - жалуется на метод маршрута

Юле4ка Знаток (376), на голосовании 1 год назад
Всем здравствуйте. Ломаю голову над ошибкой
Делаю функцию обновления записи в бд.

Выдает ошибку : "The GET method is not supported for this route. Supported methods: PATCH."

Роут:
Route::patch('/moderator/accept/{id}', 'App\Http\Controllers\ModerationController@acceptAnnouncement')->name('accept-announcement');

Ссылка на роут:
<a href="{{route('accept-announcement',$announcement->id)}}">Принять</a>

Функция в контроллере:
public function acceptAnnouncement($id){
Announcement::find($id)->update(['status_id' => 2]);
}


Не понимаю, на что он жалуется, если указан метод patch. Кэш почистила.
Всем неравнодушным спасибо!
Голосование за лучший ответ
@Synergyst Мыслитель (8914) 1 год назад
Ты отправляешь запрос через ссылку методом GET, а нужно - Patch. Ссылку можно попробовать оставить - но я не знаю как. Потому можно использовать метод формы:

 

@csrf
@method('PATCH')

Тут метод "PATCH" достигается с помощью соответствующего атрибута формы @method('PATCH'). И не забудь @csrf-токен для защиты формы от атак по CSRF.
И попробуй изменить функцию (для возврата пользователя на страницу, откуда он отправил форму, если тебе это будет нужно):
 public function acceptAnnouncement($id){ 
Announcement::findOrFail($id)->update(['status_id' => 2]);
return redirect()->back();
}
Юле4каЗнаток (376) 1 год назад
Мне конечно максимально не хотелось прибегать к использованию формы, но видимо другого способа нет ... Спасибо большое, позже попробую, если что отпишусь (._. )
@Synergyst Мыслитель (8914) Юле4ка, ну, можно оставить форму скрытой и вызывать ее через onClick:
  
   Принять 
 
 
Похожие вопросы