作者:小布丁她Daddy | 来源:互联网 | 2013-06-08 09:46
一个典型的 CakePHP 请求
我们已经在 CakePHP 中覆盖了基本的要素,让我们看看对象如何共同协作完成一个基本的请求。 下面是原始请求的例子,让我们想象我们的朋友 Ricardo 刚刚点击了 CakePHP 应用程序中登录页 “Buy A Custom Cake Now!” 链接。
流程图显示了一个标准的 CakePHP 请求
数字: 2. 标准 CakePHP 请求。
黑色 = 必备的元素, 灰色 = 可选的元素, 蓝色 = 回调
-
Ricardo 点击了指向 http://www.example.com/cakes/buy 的链接,并且它的浏览器发送了一个请求给你的 web 服务器。
-
路由解析这个 URL 用于获取请求中的参数:控制器、动作(action)和请求中影响商业逻辑的全部剩余参数。
-
使用路由,请求 URL 映射到一个控制器动作(具体的控制器类的一个方法)。在本例中,是 CakesController 的 bug() 方法。此控制器的 beforeFilter 回调方法将在其全部逻辑动作(action)执行之前被调用。
-
控制器可能会使用模型获取应用程序的数据。在本例中,控制器使用模型从数据库中匹配 Ricardo 最后的订单。所有的可用模型回调、行为和数据源将在此操作中应用。模型不是必须的,但所有的 CakePHP 控制器初始化包含至少一个模型。
-
当模型获取到数据,就将其返回给控制器,模型回调被应用。
-
控制器可能会使用组件以进一步完善数据或执行其它操作(如 session 处理、权限或者发送电子邮件)。
-
一旦控制器使用模型和组件准备好了数据,这些数据就被利用控制器的 set() 方法传送给视图。控制器回调可能会在数据传送前被调用。视图逻辑会被执行,其中可能会包括元素(elements)和/或助手。默认情况下,视图在一个布局内被渲染。
-
附加的控制器回调和(例如 afterFilter)可能会被应用。一切都完成之后,渲染完的视图代码被传送到 Ricardo 的浏览器。