Класс HttpRequest
HttpRequest — это класс, который управляет объектом Request. Он содержит информацию о текущем запросе, включая его тип и параметры. Этот класс помогает избежать использования глобальных переменных, которые применялись в старом ядре.
Создавать объект HttpRequest вручную не требуется. Его можно получить через приложение и контекст:
$request = Bitrix\Main\Application::getInstance()->getContext()->getRequest(); //Возвращает объект request
// получение параметра GET или POST
$value = $request->get("param");
//GET params
$value = $request->getQuery("param"); // получение GET-параметра
$arValues = $request->getQueryList()->toArray(); // получение списка GET-параметров в виде массива
//POST params
$value = $request->getPost("param"); // получение POST-параметра
$values = $request->getPostList()->toArray(); // получение списка POST-параметров в виде массива
//Cookie
$value = $request->getCookie("param"); // получение значения определенного ключа сookie
$request->getCookieList()->toArray() // получение списка сookie в виде массива
//Headers
$arHeaders = $request->getHeaders()->toArray(); // Получение к заголовки запроса в виде массива
//Files
$value = $request->getFile("name"); // получение определенного загружаемого файла на сервер по ключу
$values = $request->getFileList()->toArray(); // получение списка загруженных файлов в виде массива
Запрос (Request)
Request — это абстрактный класс, который предоставляет информацию о текущем запросе. Он позволяет узнать метод и протокол, запрошенный URL, переданные параметры и другие данные. Класс расширяет \Bitrix\Main\Type\ParameterDictionary.
Класс обращается к пространствам имен:
- \Main\Type — работает с типами данных,
- \Main\IO — работает с файлами,
- \Main\Text — работает с текстом.
Пример использования:
use Bitrix\Main\Application;
use Bitrix\Main\Context;
$context = Application::getInstance()->getContext();
$request = $context->getRequest();
// Или более кратко:
$request = Context::getCurrent()->getRequest();
Параметры запроса
- Получить параметр GET или POST
$value = $request->get("param");
$value = $request["param"];
- Получить GET-параметры
$value = $request->getQuery("param"); // получить параметр param
$values = $request->getQueryList(); // получить список всех параметров
- Получить POST-параметры
$value = $request->getPost("param"); // получить параметр param
$values = $request->getPostList(); // получить список всех параметров
- Получить загруженный файл
$value = $request->getFile("param"); // получить файл param
$values = $request->getFileList(); // получить список всех загруженных файлов
- Получить значение cookie
$value = $request->getCookie("param"); // получить cookie param
$values = $request->getCookieList(); // получить список всех cookies
Данные о запросе
- Получить метод запроса
$method = $request->getRequestMethod();
- Проверить тип запроса
$flag = $request->isGet(); // вернет true, если GET-запрос
$flag = $request->isPost(); // вернет true, если POST-запрос
$flag = $request->isAjaxRequest(); // вернет true, если AJAX-запрос
$flag = $request->isHttps(); // вернет true, если HTTPS-запрос
Данные о запрошенной странице
- Проверить нахождение в административном разделе
$flag = $request->isAdminSection(); // вернет true, если находимся в административном разделе
- Получить запрошенный адрес
$requestUri = $request->getRequestUri(); // например, "/catalog/category/?param=value"
- Получить запрошенную страницу
$requestPage = $request->getRequestedPage(); // например, "/catalog/category/index.php"
- Получить директорию запрошенной страницы
$rDir = $request->getRequestedPageDirectory(); // например, "/catalog/category"
Ответ (Response)
Класс \Bitrix\Main\HttpResponse — это базовый класс для работы с HTTP-ответами. Он служит контейнером для:
HTTP-заголовков
\Bitrix\Main\Web\HttpHeaders
- Добавить заголовок
\Bitrix\Main\HttpResponse::addHeader(
$name,
$value
)
Установить заголовок
\Bitrix\Main\HttpResponse::setHeaders(
Web\HttpHeaders $headers
)
Получить заголовок
\Bitrix\Main\HttpResponse::getHeaders()
Cookies
\Bitrix\Main\Web\Cookie
- Добавить cookie
\Bitrix\Main\HttpResponse::addCookie(
Web\Cookie $cookie,
$replace,
$checkExpires
)
Получить cookies
\Bitrix\Main\HttpResponse::getCookies()
Контента
\Bitrix\Main\HttpResponse::$content
- Установить контент
\Bitrix\Main\HttpResponse::setContent(
$content
)
Получить контент
\Bitrix\Main\HttpResponse::getContent()
С помощью HttpResponse можно формировать ответы приложения любого типа и содержания.
Пример использования:
$response = new \Bitrix\Main\HttpResponse();
$response->addHeader('Content-Type', 'text/plain'); // добавить заголовок
$response->addCookie(new \Bitrix\Main\Web\Cookie('Biscuits', 'Yubileynoye')); // добавить cookie
$response->setContent('Hello, world!'); // установить контент
Классы
- AjaxJson — методы для JSON-ответов. Все ответы от контроллеров \Bitrix\Main\Engine\Controller имеют структуру, понятную для JS API BX.ajax.runAction, BX.ajax.runComponentAction:
{
"status": "string",
"data": "mixed",
"errors": []
}
Zip/Archive — работает с архивом.
Для NGINX можно использовать расширение mod_zip для создания архивов без нагрузки на PHP.
use \Bitrix\Main\Engine\Response;
$archive = new Response\Zip\Archive('archive.zip');
$archive->addEntry(Response\Zip\ArchiveEntry::createFromFileId($fileId));
Zip/ArchiveEntry — описывает элемент zip-архива.
BFile — работает с файлами. Используется для скачивания файлов из таблицы
b_file
.
Component — работает с компонентами. Для загрузки компонента через AJAX:
new \Bitrix\Main\Engine\Response\Component(
'bitrix:disk.file.view',
'',
[
'FILE_ID' => $fileId,
]
);
Формирует ответ для представления компонента:
{
"status": string,
"data": {
"html": string,
"assets": {
"css": array,
"js": array,
"string": array
},
"additionalParams": array
},
"errors": array
}
Json — формирует JSON-ответ. Преобразует данные в JSON, конвертирует в UTF-8 и устанавливает заголовок
application/json; charset=UTF-8
.
new \Bitrix\Main\Engine\Response\Json('ping-pong');
/**
Content-Type: application/json; charset=UTF-8
"ping-pong"
**/
new \Bitrix\Main\Engine\Response\Json([
'id' => 2208,
'type' => 'license',
]);
/**
Content-Type: application/json; charset=UTF-8
{"id": 2208, "type": "license"}
**/
Redirect — выполняет редирект. Автоматически делает проверки безопасности и редирект с 301 или 302 статусом.
//сделать переадресацию с 302 статусом
$response = new \Bitrix\Main\Engine\Response\Redirect('/auth');
//сделать переадресацию с 301 статусом
$response = new \Bitrix\Main\Engine\Response\Redirect('/auth');
$response->setStatus('301 Moved Permanently');
ResizedImage — уменьшает изображения.