Yii - HTTP-запросы

Запросы представлены yii\web\Request объект, который предоставляет информацию о заголовках HTTP, параметрах запроса, файлах cookie и т. д.

Методы get() и post() вернуть параметры запроса компонента запроса.

Example -

$req = Yii::$app->request;
   /*
   * $get = $_GET;
   */
   $get = $req->get();

   /*
   * if(isset($_GET['id'])) { * $id = $_GET['id']; * } else { * $id = null;
   * }
   */
   $id = $req->get('id');
	
   /*
   * if(isset($_GET['id'])) { * $id = $_GET['id']; * } else { * $id = 1;
   * }
   */
   $id = $req->get('id', 1);
	
   /*
   * $post = $_POST;
	*/
   $post = $req->post();

   /*
   * if(isset($_POST['name'])) { * $name = $_POST['name']; * } else { * $name = null;
   * }
   */
   $name = $req->post('name');
		  
   /*
   * if(isset($_POST['name'])) { * $name = $_POST['name']; * } else { * $name = '';
   * }
   */
   $name = $req->post('name', '');

Step 1 - Добавить actionTestGet функция для SiteController базового шаблона приложения.

public function actionTestGet() {
   var_dump(Yii::$app->request->get());
}

Step 2 - Теперь идите в http://localhost:8080/index.php?r=site/testget&id=1&name=tutorialspoint&message=welcome, вы увидите следующее.

Чтобы получить параметры других методов запроса (PATCH, DELETE и т. Д.), Используйте yii\web\Request::getBodyParam() метод.

Чтобы получить HTTP-метод текущего запроса, используйте Yii::$app→request→method свойство.

Step 3 - Измените actionTestGet как показано в следующем коде.

public function actionTestGet() {
   $req = Yii::$app->request;
   if ($req->isAjax) { echo "the request is AJAX"; } if ($req->isGet) {
      echo "the request is GET";
   }
   if ($req->isPost) { echo "the request is POST"; } if ($req->isPut) {
      echo "the request is PUT";
   }
}

Step 4 - Перейти к http://localhost:8080/index.php?r=site/test-get. Вы увидите следующее.

Компонент запроса предоставляет множество свойств для проверки запрошенного URL.

Step 5 - Измените actionTestGet функционируют следующим образом.

public function actionTestGet() {
   //the URL without the host
   var_dump(Yii::$app->request->url); //the whole URL including the host path var_dump(Yii::$app->request->absoluteUrl);
   
   //the host of the URL
   var_dump(Yii::$app->request->hostInfo); //the part after the entry script and before the question mark var_dump(Yii::$app->request->pathInfo);
   
   //the part after the question mark
   var_dump(Yii::$app->request->queryString); //the part after the host and before the entry script var_dump(Yii::$app->request->baseUrl);
   
   //the URL without path info and query string
   var_dump(Yii::$app->request->scriptUrl); //the host name in the URL var_dump(Yii::$app->request->serverName);
   
   //the port used by the web server
   var_dump(Yii::$app->request->serverPort);
}

Step 6 - В адресной строке веб-браузера введите http://localhost:8080/index.php?r=site/testget&id=1&name=tutorialspoint&message=welcome, вы увидите следующее.

Step 7 - Чтобы получить информацию заголовка HTTP, вы можете использовать yii\web\Request::$headersсвойство. ИзменитеactionTestGet работать таким образом.

public function actionTestGet() { 
   var_dump(Yii::$app->request->headers); 
}

Step 8 - Если перейти по URL http://localhost:8080/index.php?r=site/testget&id=1&name=tutorialspoint&message=welcome, вы увидите результат, как показано в следующем коде.

Чтобы получить имя хоста и IP-адрес клиентского компьютера, используйте userHost и userIP свойства.

Step 9 - Измените actionTestGet работать таким образом.

public function actionTestGet() {
   var_dump(Yii::$app->request->userHost);
   var_dump(Yii::$app->request->userIP);
}

Step 10 - Перейти по адресу http://localhost:8080/index.php?r=site/test-get и вы увидите следующий экран.