暂时禁用控制器重定向

时间:2013-10-23 15:57:53

标签: cakephp controller cakephp-2.4

我正在尝试重新使用插件的控制器方法来添加用户(插件是usermgmt,一个购买的插件)。插件的方法可以完成我需要的所有工作,但是通过重定向到另一个页面来完成。

我不想修改插件代码,我想知道是否可以暂时禁用Controller:重定向方法

class MyController extends AppController{
    function signUpUser(){
        //populate $this->request->data to be what plugin controller method is looking for

        //temporarily disable Controller::redirect

        //make call to plugin's controller method
        $usersController = new UsersController();
        $usersController->constructClasses();
        $usersController->addUser();

        //re-enable Controller::redirect

        //Do my own redirect
        $this->redirect('/welcome');
    }
}

1 个答案:

答案 0 :(得分:1)

您不应该以这种方式使用控制器,可能是您可以使用的模型或组件。扩展用户控制器也可以是一种选择。无论如何,既然你说你已经买了它,为什么不联系支持者,他们应该最清楚他们的东西是如何运作的?

话虽如此,让我回答实际问题。为了能够通过控制器禁用重定向,您必须覆盖Controller::redirect()方法并实现一些允许您禁用该功能的逻辑。

这是一个未经测试的示例,它使用一个属性来定义是否启用重定向:

public $redirectEnabled = true;

public function redirect($url, $status = null, $exit = true) {
    if($this->redirectEnabled) {
        parent::redirect($url, $status, $exit);
    }
}

这应该是非常自我解释的。 在您的控制器中,您可以将$this->redirectEnabled设置为true / false以启用/禁用重定向功能。

相关问题