1

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

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

有没有解决的办法?我不希望向必须在控制器中检查的函数添加 return 语句,因为这就是所有函数已经完成的(1 行 if 语句),并且似乎是不必要的抽象层。我即将将该函数放在 cake 之外的一个单独文件中,然后将其添加 include到我所有需要此函数的控制器中,以此作为解决此问题的 hacky 方式。

4

1 回答 1

2

请检查组件 API

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

组件::初始化(控制器 $controller)

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

组件::启动(控制器 $controller)

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

因此,您可以根据需要使用 initialize(Controller $controller) 或 startup(Controller $controller)(似乎您需要使用 initialize)

以下列方式

    function initialize(Controller $controller ) {
        $this->controller = $controller;
    }

以及稍后在您的代码中使用的用户。CakePHP 将当前控制器作为 $controller 的值发送

于 2013-06-26T15:36:36.240 回答