Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.05.2023 17:02:33

Жалуется на метод маршрута

Всем здравствуйте. Ломаю голову над ошибкой
Делаю функцию обновления записи в бд.

Выдает ошибку : "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. Кэш почистила.
Всем неравнодушным спасибо!

Не в сети

#2 09.06.2023 09:43:24

Re: Жалуется на метод маршрута

Переход по ссылке - это запрос методом GET. У тебя не описан маршрут для GET, именно об этом тебе говорит сообщение об ошибке. Почему ты решила, что должно быть иначе?

Вообще, считается нормой не изменять данные в методе GET. Поэтому выглядит абсолютно логично, что твой маршрут описан так. Ошибка только в использовании ссылки — тут надо слать форму, а не делать переход. А так как браузер умеет только формы GET или POST, то в этой форме должно быть скрытое поле _method

как рекомендуют в документации
@method('PATCH')
или
{{ method_field('PATCH') }}
что в итоге будет преобразовано в
<input type="hidden" name="_method" value="PATCH">


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела