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