@suhuxa1

Как узнать метод запроса в laravel (если стоит в роуте match)?

Добрый день!
Добавит вот такой роут:
Route::match(['get', 'post'], 'action', ['uses' => 'mainController@action']);


Собственно action может быть любой. Если get запрос - то открыть страницу action. А если post запрос - значит сработала форма на этой странице. Вот как грамотно разделить эти 2 задачи? Правильно ли я вообще сделал, что дал оба метода одной функции контроллера? Раньше я писал 2 разных роута и функции в контроллере для гет и пост, сейчас хочу сократить.

Благодарю!
  • Вопрос задан
  • 1177 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Правильно ли я вообще сделал, что дал оба метода одной функции контроллера?
Если у вас внутри этого метода появилась необходимость различать тип запроса, то нет, что-то у вас не так сделано.

Вот как грамотно разделить эти 2 задачи?
Сгенерируйте при помощи стандартных инструментов контроллер ресурса и посмотрите как это делается идиоматически. Да просто добавьте Route::resource(...) и вызовите php artisan route:list, там вся структура контроллера видна будет.

Раньше я писал 2 разных роута и функции в контроллере для гет и пост, сейчас хочу сократить.
GET - это вывод формы, POST - обработка пользовательсого ввода. Это разная логика, ничего общего в этих методах не бывает обычно, поэтому вместо "сократить" в данном случае правильнее использовать "усложнить себе работу" или "ухудшить код".

Тем не менее, вот ответ непосредственно на ваш вопрос: эта задача решается при помощи объекта запроса:
Route::match(['get', 'post'], 'test', function (\Illuminate\Http\Request $request) {
    return $request->method();
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы