Блог Горошко Андрея 1C-Битрикс Манипуляции с URL в D7: Класс Bitrix\Main\Web\Uri (добавление, удаление параметров, парсинг)

Манипуляции с URL в D7: Класс Bitrix\Main\Web\Uri (добавление, удаление параметров, парсинг)

Средний рейтинг
Еще нет оценок

Работа с URL — рутинная задача: добавить GET-параметр, удалить «мусор», получить домен. В старом ядре использовались функции вроде $APPLICATION->GetCurPageParam.

В D7 появился специализированный класс \Bitrix\Main\Web\Uri, который делает эту работу объектно-ориентированной и безопасной.

1. Создание объекта Uri

use Bitrix\Main\Web\Uri;
use Bitrix\Main\Application;

// Из произвольной строки
$uri = new Uri("https://site.ru/catalog/shoes/?size=42&color=red#top");

// Из текущего запроса (самый частый кейс)
$request = Application::getInstance()->getContext()->getRequest();
$currentUri = new Uri($request->getRequestUri());

2. Добавление и изменение параметров (addParams)

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

// Добавляем сортировку и удаляем старую пагинацию (если была)
$currentUri->addParams([
    'sort' => 'price',
    'order' => 'asc',
    'page' => null // null не удаляет параметр, а делает его пустым (page=). Для удаления см. ниже.
]);

echo $currentUri->getUri(); // /catalog/shoes/?size=42&color=red&sort=price&order=asc

3. Удаление параметров (deleteParams)

$currentUri->deleteParams(['size', 'color']);
echo $currentUri->getUri();

4. Получение частей URL

Класс автоматически парсит строку и дает доступ к компонентам.

echo $uri->getScheme();   // https
echo $uri->getHost();     // site.ru
echo $uri->getPath();     // /catalog/shoes/
echo $uri->getQuery();    // size=42&color=red
echo $uri->getFragment(); // top

5. Работа с системными параметрами

Часто нужно очистить URL от служебных параметров Битрикса (clear_cache, login, sessid и т.д.).

use Bitrix\Main\HttpRequest;

// Удаляем все системные параметры
$uri->deleteParams(HttpRequest::getSystemParameters());


Вывод:
Класс Uri — это единственный правильный способ программно изменять ссылки в D7.

Он корректно обрабатывает кодирование символов (urlencode) и гарантирует валидность итогового адреса.

Bitrix\Main\Web\Uri, работа с url битрикс, добавить параметры в url, удалить параметры из url, парсинг url, getQuery, addParams, deleteParams.

Мой рейтинг:

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

Related Post

Пользовательские поля (UF): Как получать и обновлять их в GetList и D7 ORM*Пользовательские поля (UF): Как получать и обновлять их в GetList и D7 ORM*

Средний рейтинг 1 из 5 звезд. 1 голосов. Пользовательские поля (User Fields, UF-поля) — это стандартный механизм Битрикс для расширения сущностей (пользователей, разделов инфоблоков, HL-блоков и др.) новыми полями без

Создание комплексных компонентов в Битрикс: SEF_MODE, urlrewrite и ЧПУСоздание комплексных компонентов в Битрикс: SEF_MODE, urlrewrite и ЧПУ

Средний рейтинг Еще нет оценок Комплексный компонент не выводит информацию сам. Его главная задача — работать как маршрутизатор (роутер). Он анализирует URL-адрес и, в зависимости от него, подключает один из нескольких простых компонентов,

Управление выводом в Битрикс: Буферизация контента и RestartBufferУправление выводом в Битрикс: Буферизация контента и RestartBuffer

Средний рейтинг Еще нет оценок Весь HTML-код, который генерируется на странице Битрикс, не отправляется в браузер сразу. Он накапливается в специальном буфере вывода. Только после того, как отработает эпилог (epilog_after.php), Битрикс