我正在尝试编写一个简单的CakePHP组件,它将检查php会话变量并重定向到特定位置(如果未设置)。这个函数将用于多个控制器,我只想将它的代码放在一个地方(DRY和所有)。
我遇到的问题是,蛋糕不会使组件可以访问Controller
个函数,因此我无法调用$this->redirect([routing array])
。
有解决方法吗?我宁愿不在函数中添加一个return语句,然后我必须在控制器中检查,因为这是所有函数已经完成的(1行if语句)并且看起来像是一个不必要的抽象层。我将把函数放在蛋糕外的单独文件中,只需将include
添加到我需要此函数的所有控制器中作为一种黑客方式。
答案 0 :(得分:2)
在那里你可以看到两个回调
Component :: initialize(Controller $ controller)
在控制器的beforeFilter方法之前调用initialize方法。
Component :: startup(Controller $ controller)
在控制器的beforeFilter方法之后但在控制器执行当前操作处理程序之前调用启动方法。
所以,你可以根据你的需要使用初始化(Controller $ controller)或启动(Controller $ controller)(似乎你需要使用初始化)
以下列方式
function initialize(Controller $controller ) {
$this->controller = $controller;
}
代码中的以及后来的用户。 CakePHP将当前控制器作为$ controller
的值发送