Home  >  Article  >  Backend Development  >  CakePHP2 Request请求对象汉语教程

CakePHP2 Request请求对象汉语教程

WBOY
WBOYOriginal
2016-06-13 11:03:34966browse

CakePHP2 Request请求对象中文教程

CakeRequest是CakePHP默认的请求对象。该类用于对请求数据的处理与交互。在每一次请求过程中,CakeRequest对象都会被创建,并通过引用的方式传递到应用程序需要使用这些数据的层中(如控制器,视图)。默认的,CakeRequest对象被赋予$this->request,可以在控制器,视图和助手类中使用。通过控制器引用的方式,也可以在组件类中使用请求对象。总的来说,CakeRequest对象主要负责以下几个功能:

  • 处理GET,POST,FILES数组,并以对象形式返回这些数据
  • 提供发起请求的客户端相关信息,如headers,客户端IP地址,域名信息
  • 提供获取请求参数的方法,包括数组及对象属性。

获取请求参数

CakeRequest提供了多个接口用于获取请求参数。第一种方式是通过数组索引的形式,第二种通过$this->request-params,第三种通过对象属性的形式。例如获取当前请求的控制器。

01
02
03
$this->request['controller'];
$this->request->controller;
$this->request->params['controller']

上述的三种方式都能获取到当前请求的控制器名。通过提供多种方式来获取请求参数,可以为应用程序提供移植、升级的各种便利。a,不仅控制器可以通过如上方式获取,所有的路由元素均可以通过这些接口获取到。

除了路由元素之外,b,最常使用的请求参数还有URL中的普通参数(Passed arguments)和命名参数()。这些参数同样可以通过请求对象的三个接口获取。

01
02
03
04
05
06
07
08
09
//passed arguments
$this->request['pass']
$this->request->pass
$this->request->params['pass']
?
//named parameters
$this->request['named']
$this->request->named
$this->request->params['named']

上面同样通过CakeRequest的三个接口获取到了普通参数和命名参数。c,需要注意的是,CakePHP有很多非常重要,同时非常有用的参数,这些参数都能够通过CakeRequest对象的请求参数中获取。

  • plugin 处理当前请求的插件,没有则返回null
  • controller 处理当前请求的控制器
  • action 处理当前请求的控制器方法
  • prefix 当前控制器的前缀。如admin_edit。在路由中配置。
  • bare 通过requestAction()发起的请求包含的参数。
  • requested 当请求来自requestAction()时,值为true。

获取查询字符串参数 Accessing Querystring parameters

这个在未做重写的PHP程序中是最为常见的URL形式,可以通过CakeRequest::$query获取到查询字符串参数。

01
02
03
// URL地址 /posts/index?page=1&sort=title
$this->request->query['page']
$this->request['url']['page']

获取POST数据 Accessing POST data

所有通过POST形式传递的数据都可以通过CakeRequest::$data获取。所有表单中包含data前缀的域的数据,都可以通过移除data字符串,然后通过CakeRequest::$data获取到该值。例如。

01
02
//当一个表单域的name属性为data[Post][title]时,该值可以在提交的控制器中通过如下方式获取
$this
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn