我正在尝试重新使用插件的控制器方法来添加用户(插件是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');
}
}
答案 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
以启用/禁用重定向功能。