Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 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. Кэш почистила.
Всем неравнодушным спасибо!
Не в сети
Переход по ссылке - это запрос методом 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.
Не в сети
Страницы 1