О web-разработке
и даже немного больше...

Работа с URL-адресами в Bitrix D7

Работа с URL-адресами в Bitrix является одним из важных моментов в работе всей системы. До появления ядра версии D7 работа с URL адресами производилась посредством классов CMain::GetCurPageParam и DeleteParam. На нашем сайте ранее публиковались примеры формирования URL с передачей многомерных массивов, а также произвольных URL посредством использования GetCurPageParam.
В D7 для работы с ссылками появился аналог этим классам – Uri. Работа с классом в некоторых моментах стала сложнее, т.к. каждый аспект работы класса стал более самостоятельным, реализованным в отдельных методах.

Класс Uri в Bitrix D7

\Bitrix\Main\Web\Uri

Примеры работы c классом Uri

В представлении класса Uri в системе Bitrix каждый URL является объектом, с параметрами которого класс и работает посредством отдельных методов. Поэтому в перед тем как работать с URL необходимо инициализировать объект класса Uri.

Создание объекта из URL строки

Создать объект класса Uri мы можем из обычной строки URL, после чего уже работать с этим объектом.

$uri = new \Bitrix\Main\Web\Uri('/script.php?param1=value1&param2=value2');

Создание объекта из текущего URL

Довольно часто приходится работать с параметрами URL текущей страницы. Для работы с URL текущей страницы аналогично необходимо создать объект класса Uri. Получить текущий URL, и создать объект класса для работы с ним можно таким образом:

$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$uri = new \Bitrix\Main\Web\Uri($request->getRequestUri());

После того как создан объект класса Uri, мы можем работать с методами класса. Так к примеру, мы можем получить составляющие части сайта.

// получить URL из объекта класса
$url = $uri->getUri();

// метод возвращает путь
$path = $uri->getPath();

// строка запроса (метод вернёт параметры строки запроса)
$query = $uri->getQuery();

// так можно разбить параметры строки запроса в массив $arUrlParams
parse_str($uri->getQuery(), $arUrlParams);

// метод возвращает номер порта запроса, например 80 или 443
$port = $uri->getPort();

// протокол запроса, к примеру http или https
$scheme = $uri->getScheme();

// метод возвращает путь с запросом
$pathQuery = $uri->getPathQuery();

// имя хоста из запроса, например example.com
$host = $uri->getHost();

// получение фрагмента URL, (параметры после знака #)
$fragment = $uri->getFragment();

Методы класса Uri

Таблица доступных методов в данный момент времени:

Метод Описание С версии
addParams Метод добавляет параметры в запрос или заменяет существующие параметры. 15.5.10
deleteParams Метод удаляет параметры из запроса. 15.5.10
getFragment Метод возвращает фрагмент. 14.0.15
getHost Метод возвращает хост. 14.0.15
getLocator Метод возвращает URI без фрагмента. 15.5.10
getPass Метод возвращает пароль. 14.0.15
getPath Метод возвращает путь. 14.0.15
getPathQuery Метод возвращает путь с запросом. 14.0.15
getPort Метод возвращает номер порта. 14.0.15
getQuery Метод возвращает запрос 14.0.15
getScheme Метод возвращает схему. 14.0.15
getUri Метод возвращает URI с фрагментом, если он имеется. 15.5.10
getUser Метод возвращает пользователя. 14.0.15
setHost Метод устанавливает хост 14.0.15
setPath Метод устанавливает путь. 15.5.10
setUser Метод устанавливает пользователя. 16.5.7
setPass Метод устанавливает пароль. 16.5.7

Изменение параметров в URL

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

// задаём новый путь для URL
$uri->setPath("/new-path/to/page.php"); 

// задаём порт
$uri->setPort(80);

// задаём протокол для URL
$uri->setScheme("https");

// задаём имя хоста
$uri->setHost("example.com");

// задаём фрагменты для URL (анкоры для ссылок, после знака - #)
$uri->setFragment("anchor");

// добавление параметров
$uri->addParams(array("param1"=>"value1","param2"=>"value2"));

// удаление параметров
$uri->deleteParams(array("param1"=>"value1","param2"=>"value2"));

// удаление системных параметров
$uri->deleteParams(\Bitrix\Main\HttpRequest::getSystemParameters());

Таким образом, можно довольно гибко оперировать данными URL в различных участках кода. К примеру, это может потребоваться тогда, когда необходимо сформировать URL-адреса для списка ссылок в шаблоне компонента. Класс будет работать везде где подключается ядро, Bitrix-а, поэтому его можно использовать как в компонентах, так и в отдельных скриптах-обработчиках, к примеру, в ajax.

Опубликован: 26.08.2020 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7
Создание копии заказа в Bitrix D7

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта