【问题标题】:CakePHP: Call controller::redirect from componentCakePHP:从组件调用控制器::重定向
【发布时间】:2013-06-26 15:20:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    请检查Components API

    你可以看到两个回调

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

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

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

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

    所以,你可以使用 initialize(Controller $controller) 或 startup(Controller $controller) 取决于你的需要(似乎你需要使用初始化)

    以下方式

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2018-10-06
      • 1970-01-01
      相关资源
      最近更新 更多