Правильно ли я вообще сделал, что дал оба метода одной функции контроллера?
Если у вас внутри этого метода появилась необходимость различать тип запроса, то нет, что-то у вас не так сделано.
Вот как грамотно разделить эти 2 задачи?
Сгенерируйте при помощи стандартных инструментов контроллер ресурса и посмотрите как это делается идиоматически. Да просто добавьте
Route::resource(...)
и вызовите
php artisan route:list
, там вся структура контроллера видна будет.
Раньше я писал 2 разных роута и функции в контроллере для гет и пост, сейчас хочу сократить.
GET - это вывод формы, POST - обработка пользовательсого ввода. Это разная логика, ничего общего в этих методах не бывает обычно, поэтому вместо "сократить" в данном случае правильнее использовать "усложнить себе работу" или "ухудшить код".
Тем не менее, вот ответ непосредственно на ваш вопрос: эта задача решается при помощи объекта запроса:
Route::match(['get', 'post'], 'test', function (\Illuminate\Http\Request $request) {
return $request->method();
});