gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:23:09 28 4
gpt4 key购买 nike

剧透:我想更好地了解对 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com