CakePHP:从组件调用controller :: redirect

时间:2013-06-26 15:20:27

标签: cakephp

我正在尝试编写一个简单的CakePHP组件,它将检查php会话变量并重定向到特定位置(如果未设置)。这个函数将用于多个控制器,我只想将它的代码放在一个地方(DRY和所有)。

我遇到的问题是,蛋糕不会使组件可以访问Controller个函数,因此我无法调用$this->redirect([routing array])

有解决方法吗?我宁愿不在函数中添加一个return语句,然后我必须在控制器中检查,因为这是所有函数已经完成的(1行if语句)并且看起来像是一个不必要的抽象层。我将把函数放在蛋糕外的单独文件中,只需将include添加到我需要此函数的所有控制器中作为一种黑客方式。

1 个答案:

答案 0 :(得分:2)

请检查Components API

在那里你可以看到两个回调

  

Component :: initialize(Controller $ controller)

     

在控制器的beforeFilter方法之前调用initialize方法。

     

Component :: startup(Controller $ controller)

     

在控制器的beforeFilter方法之后但在控制器执行当前操作处理程序之前调用启动方法。

所以,你可以根据你的需要使用初始化(Controller $ controller)或启动(Controller $ controller)(似乎你需要使用初始化)

以下列方式

    function initialize(Controller $controller ) {
        $this->controller = $controller;
    }
代码中的

以及后来的用户。 CakePHP将当前控制器作为$ controller

的值发送
相关问题