Документация для разработчиков
Темная тема

UrlManager

UrlManager - класс-синглтон для построения ссылок на действия AJAX-контроллеров.

Метод Описание С версии
getInstance(
)
Возвращает экземпляр \Bitrix\Main\Engine\UrlManager.
getEndPoint(
   $absolute = false
)
Получение ссылки на endpoint, через который происходит обработка всех действий контроллеров. Параметры:
  • $absolute {bool} Если указать true, то будет возвращена абсолютная ссылка с учетом \Bitrix\Main\Engine\UrlManager::getHostUrl.

Пример:

/** @var \Bitrix\Main\Web\Uri $endpointUri **/
$endpointUri = \Bitrix\Main\Engine\UrlManager::getInstance()->getEndPoint();
echo $endpointUri;
// /bitrix/services/main/ajax.php

$endpointUri = \Bitrix\Main\Engine\UrlManager::getInstance()->getEndPoint(true);
echo $endpointUri;
// https://example.com/bitrix/services/main/ajax.php
getHostUrl(
)
Возвращает абсолютную ссылку на текущий хост с портом и схемой (http, https), с учетом настроек ядра.

Пример:

/** @var string $hostUrl **/
$hostUrl = \Bitrix\Main\Engine\UrlManager::getInstance()->getHostUrl();
echo $hostUrl;
// https://example.com
create(
   $action,
   $params = [],
   $absolute = false
): \Bitrix\Main\Web\Uri
Создает ссылку на конкретное действие. По умолчанию, добавляет SITE_ID, если он известен. Параметры:
  • $action {string} Полное имя действия. Например, disk.file.get.
  • $params {array} Массив параметров, которые будут добавлены в query string. Параметры при необходимости будут пропущены через функцию urlencode.
  • $absolute {bool} Если указать true, то будет возвращена абсолютная ссылка с учетом \Bitrix\Main\Engine\UrlManager::getHostUrl. По умолчанию false.

Пример:

/** @var \Bitrix\Main\Web\Uri $uri **/
$uri = \Bitrix\Main\Engine\UrlManager::getInstance()->create('someModule.someController.demoAction');
echo $uri;
// /bitrix/services/main/ajax.php?action=someModule.someController.demoAction

/** @var \Bitrix\Main\Web\Uri $uri **/
$uri = \Bitrix\Main\Engine\UrlManager::getInstance()->create('someModule.someController.demoAction', ['hello' => 'world']);
echo $uri;
// /bitrix/services/main/ajax.php?action=someModule.someController.demoAction&hello=world
createByController(
   Controller $controller, 
   $action, 
   $params = [],
   $absolute = false
): \Bitrix\Main\Web\Uri
Создает ссылку на действие внутри класса контроллера. При этом полный путь до контроллера будет рассчитан автоматически на основании экземпляра контроллера. Параметры:
  • $controller {Controller} Экземпляр \Bitrix\Main\Engine\Controller, для которого будет строиться ссылка.
  • $action {string} Имя действия, непосредственно внутри $controller. Например, get.
  • $params {array} Массив параметров, которые будут добавлены в query string. Параметры при необходимости будут пропущены через функцию urlencode.
  • $absolute {bool} Если указать true, то будет возвращена абсолютная ссылка с учетом \Bitrix\Main\Engine\UrlManager::getHostUrl. По умолчанию false.

Пример:

/** @var \Bitrix\Disk\Controller\File $controller */
$controller = new \Bitrix\Disk\Controller\File();
$uri = \Bitrix\Main\Engine\UrlManager::getInstance()->createByController($controller, 'get', ['id' => 100]);
echo $uri;
// /bitrix/services/main/ajax.php?action=disk.controller.file.get&id=100
createByComponentController(
   Controller $controller,
   $action,
   $params = [],
   $absolute = false
): \Bitrix\Main\Web\Uri
Создает ссылку на действие внутри класса контроллера компонента (в файле ajax.php). При этом полный путь до контроллера будет рассчитан автоматически на основании экземпляра компонента контроллера. Параметры:
  • $controller {Controller} Экземпляр \Bitrix\Main\Engine\Controller, для которого будет строиться ссылка. Внимание! Это контроллер, который располагается внутри компонента, в файле ajax.php.
  • $action {string} Имя действия, непосредственно внутри $controller. Например, showSpace.
  • $params {array} Массив параметров, которые будут добавлены в query string. Параметры при необходимости будут пропущены через функцию urlencode.
  • $absolute {bool} Если указать true, то будет возвращена абсолютная ссылка с учетом \Bitrix\Main\Engine\UrlManager::getHostUrl. По умолчанию false.

Пример

/** @var \SomeComponentController $controller */
$controller = new \SomeComponentController();
$uri = \Bitrix\Main\Engine\UrlManager::getInstance()->createByComponentController($controller, 'showSpace', ['number' => 42]);
echo $uri;
// /bitrix/services/main/ajax.php?c=bitrix:list.example&mode=ajax&action=showSpace&number=42
createByBitrixComponent(
   \CBitrixComponent $component, 
   $action,
   $params = array(),
   $absolute = false
): \Bitrix\Main\Web\Uri
Создает ссылку на действие внутри класса компонента. При этом полный путь будет рассчитан автоматически на основании экземпляра компонента. Параметры:
  • $component {\CBitrixComponent} Экземпляр \CBitrixComponent, для которого будет строиться ссылка.
  • $action {string} Имя действия, непосредственно внутри $controller. Например, get.
  • $params {array} Массив параметров, которые будут добавлены в query string. Параметры при необходимости будут пропущены через функцию urlencode.
  • $absolute {bool} Если указать true, то будет возвращена абсолютная ссылка с учетом \Bitrix\Main\Engine\UrlManager::getHostUrl. По умолчанию false.

Пример

/** @var \ListExampleComponent $component */
$component = new \ListExampleComponent();
$uri = \Bitrix\Main\Engine\UrlManager::getInstance()->createByBitrixComponent($component, 'get', ['id' => 40]);
echo $uri;
// /bitrix/services/main/ajax.php?c=bitrix:list.example&mode=class&action=get&id=40


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх