0

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

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

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');
    }
}
4

1 回答 1

1

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

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

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

public $redirectEnabled = true;

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

这应该是不言自明的。在您的控制器中,您可以设置$this->redirectEnabledtrue/false以启用/禁用重定向功能。

于 2013-10-24T01:44:31.117 回答