我有以下控制器结构:
使用以下代码:
主控制器:
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load_defaults();
}
public function load_defaults() {
}
}
儿童控制器1:
class Child1 extends MY_Controller {
public function __construct() {
parent::__construct();
$this->main();
}
public function main() {
echo "function in Child Controller 1";
}
}
儿童控制器2:
class Child2 extends MY_Controller {
public function __construct() {
parent::__construct();
$this->main();
}
public function main() {
echo "function in Child Controller 2";
}
}
我的问题:如何从Child2控制器调用位于Child1控制器中的函数?
答案 0 :(得分:2)
如果你必须从另一个控制器调用控制器,那你就错了。控制器可以接受来自客户端的URI请求。
请尝试重新审视问题并查看是否可以将公共逻辑移动到MY_Controller - 它将是可访问的,因为所有其他控制器都会扩展它。
此外,模型将是具有将从控制器调用的常用功能的好地方。
答案 1 :(得分:-1)
我认为你要找的是redirect
。考虑到通过CI约定,每个控制器功能应该是用户的端点,如果您想从另一个控制器访问某个功能,那么您真正尝试做的是将它们重定向到该控制器。
function someEndPoint(){
$this->load->helper('url');
redirect('someOtherEndPoint', 'refresh');
}