Просмотров: 24615
Дата последнего изменения: 07.11.2023
Сложность урока:
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