Метод group
Метод group применяется к классу Route
и позволяет объединять несколько маршрутов в группу
с общими параметрами. Первым параметром передаётся
массив настроек группы (префикс, middleware,
пространство имён контроллеров), вторым - замыкание
или массив маршрутов.
Синтаксис
<?php
Route::group($attributes, $callback);
?>
Пример
Создадим группу маршрутов с общим префиксом 'admin':
<?php
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'admin'], function () {
Route::get('/users', function () {
return 'Users list';
});
Route::get('/settings', function () {
return 'Settings page';
});
});
?>
Результат выполнения кода для адреса /admin/users:
"Users list"
Пример
Создадим группу маршрутов с общим middleware и префиксом:
<?php
use Illuminate\Support\Facades\Route;
Route::group([
'prefix' => 'api',
'middleware' => 'auth'
], function () {
Route::get('/profile', function () {
return 'User profile';
});
Route::post('/update', function () {
return 'Profile updated';
});
});
?>
Результат выполнения кода для авторизованного пользователя:
"User profile"
Пример
Используем группу для указания общего пространства имён контроллеров:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\UserController;
Route::group([
'namespace' => 'App\Http\Controllers\Admin',
'prefix' => 'admin'
], function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
Route::get('/users', [UserController::class, 'index']);
});
?>
Результат выполнения кода для адреса /admin/dashboard:
"Admin dashboard view"
Пример
Используем группу для назначения общих имён маршрутам:
<?php
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'blog', 'as' => 'blog.'], function () {
Route::get('/', function () {
return 'Blog index';
})->name('index');
Route::get('/post/{id}', function ($id) {
return "Post $id";
})->name('show');
});
?>
Результат выполнения кода для адреса /blog/post/5:
"Post 5"
Пример
Вложенные группы маршрутов с разными атрибутами:
<?php
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'api', 'middleware' => 'auth'], function () {
Route::group(['prefix' => 'v1'], function () {
Route::get('/users', function () {
return 'API v1 users';
});
Route::group(['prefix' => 'admin'], function () {
Route::get('/dashboard', function () {
return 'API v1 admin dashboard';
});
});
});
});
?>
Результат выполнения кода для адреса /api/v1/admin/dashboard:
"API v1 admin dashboard"
Смотрите также
-
метод
prefix,
который устанавливает префикс для группы маршрутов -
метод
middleware,
который применяет middleware к группе маршрутов -
метод
name,
который задаёт имя для отдельного маршрута -
метод
domain,
который ограничивает группу маршрутов поддоменом