📜  Yii-HTTP请求

📅  最后修改于: 2020-10-16 07:11:54             🧑  作者: Mango


请求由yii \ web \ Request对象表示,该对象提供有关HTTP标头,请求参数,Cookie等的信息。

方法get()post()返回请求组件的请求参数。

示例

$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', '');

步骤1-actionTestGet函数添加到基本应用程序模板的SiteController中。

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

步骤2-现在转到http:// localhost:8080 / index.php?r = site / testget&id = 1&name = tutorialspoint&message = welcome ,您将看到以下内容。

actionTestGet函数输出

要检索其他请求方法(PATCH,DELETE等)的参数,请使用yii \ web \ Request :: getBodyParam()方法。

要获取当前请求的HTTP方法,请使用Yii :: $ app→request→method属性。

步骤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";
   }
}

步骤4-转到http:// localhost:8080 / index.php?r = site / test-get 。您将看到以下内容。

获取请求

请求组件提供了许多属性来检查请求的URL。

步骤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);
}

步骤6-在Web浏览器的地址栏中,输入http:// localhost:8080 / index.php?r = site / testget&id = 1&name = tutorialspoint&message = welcome ,您将看到以下内容。

修改Actiontestget函数输出

步骤7-要获取HTTP头信息,可以使用yii \ web \ Request :: $ headers属性。以此方式修改actionTestGet函数。

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

步骤8-如果您转到URL http:// localhost:8080 / index.php?r = site / testget&id = 1&name = tutorialspoint&message = welcome ,您将看到输出,如以下代码所示。

修改后的Actiontestget函数输出

要获取客户端计算机的主机名和IP地址,请使用userHostuserIP属性。

步骤9-以这种方式修改actionTestGet函数。

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

步骤10-转到地址http:// localhost:8080 / index.php?r = site / test-get ,您将看到以下屏幕。

actionTestGet函数输出屏幕