您无法从 CI 中的控制器加载控制器 - 除非您使用 HMVC 或其他内容。
你应该稍微考虑一下你的架构。如果需要从另一个控制器调用控制器方法,则可能应该将该代码抽象出到帮助程序或库中,并从两个控制器调用它。
更新
再次阅读您的问题后,我意识到您的最终目标不一定是HMVC,而是URI操作。如果我错了,请纠正我,但似乎您正在尝试完成URL,第一部分是方法名称,并完全省略控制器名称。
如果是这种情况,您可以通过在路线上发挥创意来获得更干净的解决方案。
对于一个非常基本的示例,假设您有两个控制器,并且 . 有一个方法 - 并且有一个方法。controller1
controller2
Controller1
method_1
controller2
method_2
您可以按如下方式设置路由:
$route['method_1'] = "controller1/method_1";
$route['method_2'] = "controller2/method_2";
然后,可以使用类似 URL 的方法 1 调用方法 1,并使用 .http://site.com/method_1
http://site.com/method_2
虽然,这是一个硬编码的,非常基本的示例 - 但是如果您需要做的就是从URL中删除控制器,它可以将您带到需要的位置。
您还可以重新映射控制器。
来自文档:“如果您的控制器包含名为_remap()的函数,则无论您的URI包含什么,它都将始终被调用。
public function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->default_method();
}
}