cakephp控制器

2021年09月15日 阅读数:1
这篇文章主要向大家介绍cakephp控制器,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
cakephp的请求示意图:
cakephp控制器_数据


黑色 = 请求的元素, 灰色 = 可选的元素, 了;蓝色 = 回调方法php

  1. Ricardo 点击了指向 http://www.example.com/cakes/buy 的连接, 而后他的浏览器对你的服务器发出了一个请求。
  2. 路由(route)从URL中解释并提取出此次请求的参数: 控制器(controller), 动做(action)以及其余在此次请求中影响到业务逻辑的全部其余参数。
  3. 使用路由后,请求的URL被映射到一个控制器的动做中(在特定的一个控制器的类的一个方法)。在这个例子,是CakeController类的buy()方法。在控制器的全部动做逻辑执行以前会调用beforeFilter()回调方法(callback)。
  4. 控制器可能会使用模型来处理应用的数据。在这个例子里,控制器使用了一个模型从数据里获得Ricardo上次买的东西。在此次操做中全部 这个模型 适用的回调方法、习惯(behavior)和数据源(DataSource)均可能获得实施。即便模型没有被用到,全部的CakePHP控制器的初始化至 少都须要一个模型。
  5. 当模型取得数据后,数据会被返回到控制器。模型的回调方法可能会被实施。
  6. 控制器可能使用组件对数据进行进一步的加工,或者进行其余的操做(例如会话处理、验证或者发电子邮件)。
  7. 一旦控制器使用了模型和组件以有效地准备数据,就可使用控制器的set()方法把数据传送到视图(view)。在数据送到视图前,控制 器的回调 方法可能会被实施。视图逻辑会被执行,可能包括了各类元素及(或者)帮助方法。默认状况下,视图会在一个布局(layout)里被渲染。
  8. 附加的控制器回调方法(像afterFilter)可能被实施。最后,完整的通过渲染的视图代码就被送到Ricardo的浏览器了。
 

在 cakephp中,控制器的类名是采用CamelCase的方式进行命名,要创建个用户的控制器,在app/controllers目录下创建 users_controller.php(小写复数形式),若是长名的话使用下滑下链接,如 kisses_and_hugs_controller.php。
users_controller.php控制器中代码的类名为:UsersController
kisses_and_hugs_controller.php控制器中代码的类名为:KissesAndHugsController

php4中,须要加上$name属性,PHP5不需用,为了兼容仍是加上吧。


控制器的属性:


1. $name

说明:
PHP4的用户若是要定义控制器必须从$name的属性开始。$name属性是控制器的名字。一般他是控制器主要使用的模块的单词的复数形式。这就解决了CakePHP的命名方式而且避开了PHP4中一些比较奇怪的类名.

PHP 4 返回的类名并不遵循CamelCase(驼峰命名法)格式。若是你所以遇到了问题,使用这个变量来为你的类设置正确的遵循CamelCase格式的名字。 (译注:对于UsersController类,默认状况下Cake将经过CamelCase格式将”UsersController”拆分红” Users”和”Controller”,并以此来定位到与之对应的UserModel,而php 4下面返回极可能是userscontroller(不符合CamelCase),因此致使了问题)

2. $components, $helpers, $uses
    $components 包含的内容为控制器使用的组建。
    $helpers 包含了VIEW使用的插件,也就是小助手
    $uses 包含了模型使用的MODEL模块。

EXP:
class
UsersController extends AppController
{
   $name = " Users";
   $components = array("Session","
Email
"); 使用Session and Email组件。
}


控制器的页面使用的属性:

1.$layout

   说明:设置使用哪一个最外层的HTML模版 若是这个属性没有被定义的话,CakePHP会使用默认的页面。若是你没有建立默认页面/app/views/layouts/default.ctp,CakePHP的内核的默认页面会被使用。
2.$pageTitle
   说明:设置页面的标题。
EXP:
class UsersController extends AppController
{
var $name = " Users";
   var $components = array("Session","
Email"); 使用Session and Email组件。
var $helpers = array('Html', 'Ajax');
var $uses = array('Recipe', 'User');
   $this->layout("report.html");
    $this->pageTitle="black8";
}


控制器的参数属性:
主要是使用$params,这个属性里包含了POST或者GET过来的数据
1.$this->params['form'];   
说明:表单的全部数据经过POST方法传递进来都保存在这里,包括$_FILES变量的数据
2.$this->params['controller']
说明:当前请求的控制器名称
3.$this->params['action']
说明:当前请求的动做的名称
4.$this->params['pass']
说明:保存当前请求的GET的查询语句
5.$this->params[‘url’]
返回当前被请求的URL,连同get参数的键值对一块儿。
EXP:
URL : http://hi.baidu.com/black8/modify/?var1=3&var2=4
$this->params['controller']    ==== black8
$this->params['action'] ==== modify
$this->params['pass'] ==== ?var1=3&var2=4
$this->params[‘url’] ======
html

  1. [url] => Array  
  2.          (  
  3.              [url] => black8/modify
  4.              [var1] => 3  
  5.              [var2] => 4  
  6.          )

6.$this->data
用来处理来自HTML helper的POST表单数据。(看到助手了再写)浏览器

上一篇: kubernetes 控制器
下一篇: AngularJS 控制器