Метод any
Метод any класса Route применяется для создания маршрута,
который обрабатывает запросы с любым HTTP методом.
Первым параметром передаётся URI маршрута,
вторым - действие (контроллер или замыкание).
Этот метод удобно использовать для обработки форм,
когда неизвестно, какой метод будет использован,
или для создания единой точки входа для всех типов запросов.
Синтаксис
<?php
use Illuminate\Support\Facades\Route;
Route::any($uri, $action);
?>
Пример
Давайте зарегистрируем маршрут для страницы профиля, который будет обрабатывать запросы любым методом:
<?php
use Illuminate\Support\Facades\Route;
Route::any('/profile', function () {
$method = request()->method();
return "Request method: {$method}";
});
?>
Результат выполнения кода при GET запросе:
"Request method: GET"
Результат выполнения кода при POST запросе:
"Request method: POST"
Пример
Давайте создадим маршрут, который принимает все типы запросов и передаёт управление контроллеру:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProfileController;
Route::any('/profile', [ProfileController::class, 'handle']);
?>
Теперь создадим контроллер, который будет обрабатывать все запросы:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function handle(Request $request)
{
$method = $request->method();
$data = $request->all();
return response()->json([
'method' => $method,
'data' => $data
]);
}
}
?>
Результат выполнения кода при PUT запросе с данными:
{"method":"PUT","data":{"name":"John","age":30}}
Пример
Давайте создадим маршрут с параметром, который обрабатывает все методы:
<?php
use Illuminate\Support\Facades\Route;
Route::any('/user/{id}', function ($id) {
$method = request()->method();
return "User ID: {$id}, Method: {$method}";
});
?>
Результат выполнения кода при DELETE запросе:
"User ID: 25, Method: DELETE"