138  /  389
Справочник

Группы

Просмотров: 623
Дата последнего изменения: 29.06.2021
Роберт Басыров
Сложность урока:
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.


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

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