cakephp - CakePHP 请求的生命周期是什么?

标签 cakephp model-view-controller cakephp-2.0

剧透:我想更好地了解对 CakePHP 应用程序的请求的生命周期。

背景:我使用的是 CakePHP v2.3。我正在调试一个问题,该问题导致我无法找到的不想要的重定向。我正在尝试通过增量添加 die() 来完成请求的生命周期。尝试确定触发重定向的位置。

我遇到了死胡同,因为我可以从 Controller 的 beforeFilter() 中终止执行,但是如果我移动 die() 就会发生重定向。进入实际行动。

所以我的具体问题是:在 beforeFilter 之后但在 Action 之前会发生什么?我知道 beforeRender(),当我放置 die() 时它没有效果那里。

我更一般/更好的问题是:是否有关于 CakePHP 请求的整个生命周期的文档?

对其中任何一个的答案都会很棒。

更新

感谢 Mathew F. 的有用建议,我将注意力集中在 Auth 组件上,因为它几乎是唯一的候选组件,而且我正在调试的重定向看起来像是手工制作的(用户到达 authRedirect 位置)。但是,当我尝试使用 die() 时在 AppController 的顶部 isAuthorized()没发生什么事。而我的 Controller 没有 isAuthorized()它自己的。所以这让我又有点难住了。

最佳答案

I hit a dead end because I can kill the execution from inside the controller's beforeFilter(), but the redirect happens if I move the die() into the actual action.



这是重定向是由组件执行的一个重要线索。
beforeFilter()在为请求配置任何内容之前调用。这包括 Controller 及其组件。组件在调用 Controller 操作之前被初始化。所以组件可以重定向(即 AuthComponent 这样做)。

So my specific question is: what happens after the beforeFilter but before the action? I know of beforeRender(), which had no effect when I placed the die() there.



请求首先由调度程序处理。它被路由到 Controller 的 Action 。然后实例化该 Controller ,然后实例化它的所有组件。对于每个组件,他们的 initialize()方法被调用。之后 Controller 的beforeFilter()方法被调用。其次是所有组件startup()方法。然后调用 Controller 的 Action 。

http://book.cakephp.org/2.0/en/controllers/components.html#component-api

您可以尝试排除组件以查找导致问题的组件。另一种选择是添加 echo "hello"给您的 index.php在 webroot 中。这将强制执行 header can not be modified发送重定向时出错。

关于cakephp - CakePHP 请求的生命周期是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20525897/

相关文章:

javascript - Ember.js:内联 Handlebars 模板在应用程序的根元素处呈现

php - 密码确认验证 CakePHP

php - Cakephp - 在 View 页面的不同位置显示 flash 消息

CakePHP 在每个表上查找带有条件的连接记录

php - 通过 PHPMailer 发送电子邮件时出现身份验证错误

cakephp - 在 CakePHP 中包含 View 中的外部 CSS 和 js 文件的正确语法

php - CakePHP 业务逻辑层

.net - ASP.NET MVC Web 应用程序中忽略了 AssemblyInfo 版本控制?

c++ - QTreeView 合并一些单元格

php - Cakephp 如何检查其命名约定和文件夹名称?