Запросы, поданные в приложение, представлены в терминах объектов yii\web\Request objects
, которые предоставляют информацию, такую как параметры запроса, заголовки HTTP, файлы cookie и т. д. Для данного запроса вы можете получить доступ к соответствующему объекту запроса через компонент приложения request, который является экземпляром yii\web\Request
, по умолчанию.
Параметры запроса
Чтобы получить параметры запроса, вы можете вызвать методы get()
и post()
компонента request. Они возвращают значения $ _GET
и $ _POST
, соответственно. Например:
$request = Yii::$app->request;
$get = $request->get();
//эквивалентно: $get = $_GET;
$id = $request->get('id');
//эквивалентно: $id = isset($_GET['id']) ? $_GET['id'] : null;
$id = $request->get('id', 1);
//эквивалентно: $id = isset($_GET['id']) ? $_GET['id'] : 1;
$post = $request->post();
//эквивалентно: $post = $_POST;
$name = $request->post('name');
//эквивалентно: $name = isset($_POST['name']) ? $_POST['name'] : null;
$name = $request->post('name', '');
//эквивалентно: $name = isset($_POST['name']) ? $_POST['name'] : '';
При внедрении API-интерфейсов RESTful часто требуется получить параметры, которые отправляются через PUT
, PATCH
или другие методы запроса. Вы можете получить эти параметры, вызывая методы yii\web\Request::getBodyParam()
. Например:
$request = Yii::$app->request;
//возвратить все параметры
$params = $request->bodyParams;
//возвратить параметр "id"
$param = $request->getBodyParam('id');
Методы запроса
Вы можете получить метод HTTP, используемый текущим запросом, с помощью выражения Yii::$app->request->method
. Полный набор булевых свойств также предоставлен вам, чтобы проверить, имеет ли текущий метод определенный тип. Например:
$request = Yii::$app->request;
if ($request->isAjax) { /* запрос является запросом AJAX */ }
if ($request->isGet) { /* метод запроса - GET */ }
if ($request->isPost) { /* метод запроса - POST */ }
if ($request->isPut) { /* метод запроса - PUT */ }
Запросить URL-адреса
Компонент request предоставляет множество способов проверки запрашиваемого URL. Предполагая, что запрашиваемый URL - это http://example.com/admin/index.php/product?id=100
, вы можете получить различные части этого URL, которые суммируются в следующем:
url
: возвращает/admin/index.php/product?id=100
, который является URL-адресом без части информации хоста.absoluteUrl
: возвращаетhttp://example.com/admin/index.php/product?id=100
, который является целым URL, включая часть информации хоста.hostInfo
: возвращаетhttp://example.com
, которая является частью информации хоста URL.pathInfo
: возвращает/product
, который является частью после сценария входа и перед вопросительным знаком (строка запроса).queryString
: возвращаетid=100
, который является частью после вопросительного знака.baseUrl
: возвращает/admin
, который является частью после информации хоста и перед именем сценария входа.scriptUrl
: возвращает/admin/index.php
, который представляет собой URL-адрес без информации о пути и строки запроса.serverName
: возвращаетexample.com
, который является именем узла в URL-адресе.serverPort
: возвращает80
, который является портом, используемым веб-сервером.
Заголовки HTTP
Вы можете получить информацию заголовка HTTP через коллекцию заголовков, возвращенную свойством yii\web\Request::$headers
. Например:
//$headers is an object of yii\web\HeaderCollection
$headers = Yii::$app->request->headers;
//returns the Accept header value
$accept = $headers->get('Accept');
if ($headers->has('User-Agent')) { /* there is User-Agent header */ }
Компонент request также обеспечивает поддержку быстрого доступа к некоторым часто используемым заголовкам, включая:
userAgent
: возвращает значение заголовкаUser-Agent
.contentType
: возвращает значение заголовкаContent-Type
, который указывает тип MIME данных в теле запроса.acceptableContentTypes
: возвращает допустимые пользователями типы содержимого MIME. Возвращаемые типы упорядочены по их оценке качества. Сначала будут возвращены типы с наивысшими баллами.acceptableLanguages
: возвращает языки, приемлемые для пользователей. Возвращенные языки упорядочены по их уровню предпочтений. Первый элемент представляет наиболее предпочтительный язык.
Если ваше приложение поддерживает несколько языков и вы хотите отображать страницы на языке, который является наиболее предпочтительным для конечного пользователя, вы можете использовать метод согласования языка yii\web\Request::getPreferredLanguage()
. Этот метод берет список языков, поддерживаемых вашим приложением, сравнивает их с допустимыми языками и возвращает наиболее подходящий язык.
Информация о клиенте
Вы можете получить имя хоста и IP-адрес клиентской машины через userHost
и userIP
соответственно. Например:
$userHost = Yii::$app->request->userHost;
$userIP = Yii::$app->request->userIP;
0 комментариев