Requests

Запросы, поданные в приложение, представлены в терминах объектов 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;