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

Генерация ссылок

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

  Маршруты с именем

При описании маршрута задайте для него уникальное имя:

$routes->get('/countries/{country}', function () {
        return 'some output';
})->name('country_detail');

И используйте это имя для генерации ссылки:

$router = \Bitrix\Main\Application::getInstance()->getRouter();
$url = $router->route('country_detail', ['country' => 'Australia']);

// $url: /countries/Australia

Имена выступают в роли уникальных идентификаторов. Если понадобится поменять формат ссылки, например поменять статическую часть:

- $routes->get('/countries/{country}', function () {
+ $routes->get('/страны/{country}', function () {
        return 'some output';
})->name('country_detail');

То в этом случае не придется менять все ссылки на данный маршрут, поскольку они используют именно name для адресации.

  Маршруты без имени

Если для маршрута не задано уникальное имя, то допустимо в ссылке указывать его адрес вручную. При наличии GET параметров может быть полезен хелпер \Bitrix\Main\Routing\Router::url():

$country = 'Australia';
$router = \Bitrix\Main\Application::getInstance()->getRouter();
$url = $router->url("/contries/{$country}", [
        'showMoreDetails' => 1
]);

// $url: /contries/Australia?showMoreDetails=1

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

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