139  /  382
Справочник

Группы

Просмотров: 23331
Дата последнего изменения: 07.11.2023
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет

  Объединение в группы

При схожих признаках у нескольких маршрутов рекомендуется объединять их в группы:

$routes->group(function (RoutingConfigurator $routes) {
        $routes->get('/path1, function () {});
        $routes->get('/path2, function () {});
        $routes->get('/path3, function () {});
});

Само по себе объединение не влияет на поведение системы и имеет смысл именно при наличии общих признаков: параметры, prefix или name, которые будут рассмотрены ниже.

  Параметры группы

Если у нескольких маршрутов есть общий параметр, то имеет смысл вынести его на уровень группы. Это позволит не описывать параметр отдельно для каждого маршрута:

$routes
        ->where('serviceCode', '[a-z0-9]+')
        ->group(function (RoutingConfigurator $routes) {
        $routes->get('/{serviceCode}/info', [ServicesController::class, 'info']);
        $routes->get('/{serviceCode}/stats', [ServicesController::class, 'stats']);
});

  prefix группы

Если у маршрутов совпадает начало адреса, то вынесите его общим для группы:

$routes->prefix('about')->group(function (RoutingConfigurator $routes) {
        $routes->get('company', function () {});
        $routes->get('personal', function () {});
        $routes->get('contact', function () {});
}); 

В примере выше адреса маршрутов будут восприняты как /about/company, /about/personal и /about/contact, таким образом не придется дублировать общую часть.

  name группы

Похожим на prefix образом работает формирование общей части в имени роутов:

$routes
     ->prefix('about')
     ->name('about_')
     ->group(function (RoutingConfigurator $routes) {
        $routes->name('company')->get('company', function () {});
        $routes->name('personal')->get('personal', function () {});
        $routes->name('contact')->get('contact', function () {});
    })
;

В примере выше будут установлены имена маршрутов about_company, about_personal и about_contact.


9
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии