Группировка маршрутов
Группировка маршрутов позволяет задать общие атрибуты (такие как middleware, контроллер, префикс и т.д.) для всех маршрутов в группе, без необходимости указывать их для каждого маршрута отдельно.
Вложенные группы поддерживают "объединения" атрибутов со своей родительской группой. Middleware и другие условия объединяются, а имена и префиксы - присоединяются.
Группировка по middleware
Чтобы назначить middleware для всех маршрутов в группе, используйте метод middleware перед определением группы. Middleware будут выполняться в том порядке, в котором они перечислены в массиве:
Route::middleware(['first', 'second'])->group(function () {
Route::get('/', function () {
// Uses first & second middleware
});
Route::get('/user/profile', function () {
// Uses first & second middleware
});
});
Группировка по контроллеру
Если все маршруты должны использовать один контроллер, используйте метод controller перед объявлением группы, чтобы задать единый контроллер.
use App\Http\Controllers\ProductController;
Route::controller(ProductController::class)->group(function () {
Route::get('/products', 'show');
Route::post('/products', 'store');
});
Группировка по домену
Группы маршрутов могут быть привязаны к конкретным доменам или поддоменам с помощью метода domain(). Это полезно для создания мультитенантных приложений или разделения логики по разным доменам.
Домен или поддомен может содержать параметры - так же, как и в URI маршрутах. Это позволяет передавать значения из домена в обработчики маршрутов.
Route::domain('{account}.example.com')->group(function () {
Route::get('/user/{id}', function ($account, $id) {
// $account будет содержать значение из поддомена
});
});
Регистрацию маршрутов для поддоменов необходимо выполнять до регистрации маршрутов корневого домена.
Группировка по префиксу
Метод prefix() позволяет задать общий префикс URI для всех маршрутов в группе. Например, чтобы все маршруты в группе начинались с /admin, используйте префикс admin:
Route::prefix('admin')->group(function () {
Route::get('/users', function () {
// Matches the '/admin/users' URL
});
Route::get('/news', function () {
// Matches the '/admin/news' URL
});
});
Группировка по имени
Метод name() задаёт префикс имени для всех маршрутов в группе. Например, префикс admin. (с точкой!) будет добавлен к имени каждого маршрута, поэтому важно указать правильно.
Route::name('admin.')->group(function () {
Route::get('/users', function () {
// Route assigned name 'admin.users'
})->name('users');
Route::get('/news', function () {
// Route assigned name 'admin.news'
})->name('news');
});