eme*_*his 4 model-view-controller cakephp cakephp-2.0
Spoiler:我想更好地理解CakePHP应用程序请求的生命周期.
背景:我在CakePHP v2.3上.我正在调试一个导致意外重定向的问题,这是我找不到的.我试图通过逐步添加die()尝试识别重定向被触发的位置来处理请求的生命周期.
我遇到了死胡同,因为我可以从控制器的beforeFilter()中杀死执行,但是如果我移动die()到实际操作中,则会发生重定向.
所以我的具体问题是:在beforeFilter之后但在行动之前会发生什么?我知道beforeRender(),当我放在die()那里时没有效果.
我更普遍/更好的问题是:是否有关于CakePHP请求的整个生命周期的文档?
对其中任何一个的答案都很棒.
更新
感谢Mathew F.的有用建议,我将注意力集中在Auth组件上,因为它几乎是唯一的候选者,我调试的重定向看起来像是手工(用户到达authRedirect位置).但是,当我die()在AppController的顶部trie 时,isAuthorized()没有任何反应.我的控制器没有isAuthorized()它自己的.所以这让我有点难过了.
我遇到了死胡同,因为我可以从控制器的beforeFilter()中杀死执行,但是如果我将die()移动到实际操作中,则会发生重定向.
这是重组直接由组件执行的一个重要线索.
beforeFilter()在为请求配置任何内容之前调用.这包括控制器及其组件.在调用控制器的操作之前初始化组件.因此组件可以重定向(即AuthComponent执行此操作).
所以我的具体问题是:在beforeFilter之后但在行动之前会发生什么?我知道beforeRender(),当我把die()放在那里时没有效果.
该请求首先由调度员处理.它被路由到控制器的动作.然后实例化该控制器,然后实例化其所有组件.对于每个组件,initialize()调用它们的方法.之后beforeFilter()调用控制器的方法.其次是所有组件startup()方法.然后调用控制器的动作.
http://book.cakephp.org/2.0/en/controllers/components.html#component-api
您可以尝试排除组件以找到导致问题的组件.另一个选择是添加echo "hello"到您index.php的webroot.这将header can not be modified在发送重定向的位置强制发生错误.
好问题!取自本书:

| 归档时间: |
|
| 查看次数: |
1887 次 |
| 最近记录: |