Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 使用代码点火器控制器的添加程序包路径_Codeigniter_Codeigniter 2 - Fatal编程技术网

Codeigniter 使用代码点火器控制器的添加程序包路径

Codeigniter 使用代码点火器控制器的添加程序包路径,codeigniter,codeigniter-2,Codeigniter,Codeigniter 2,我正在尝试使用$this->load->add_package_路径将新的子应用程序添加到我的CI应用程序中。我可以看到如何使用这个视图和这样的:只需放置 $this->load->add_package_path("/mypackage"); 在控制器中。不幸的是,这没有帮助,因为我想从包路径找到控制器:这似乎是一个鸡和蛋的问题。是否还有其他地方可以放置添加包路径调用,如index.php?通过CI跟踪找到了它。结果证明你不能这么做。您可以将自己的控制器放在/applicatio

我正在尝试使用$this->load->add_package_路径将新的子应用程序添加到我的CI应用程序中。我可以看到如何使用这个视图和这样的:只需放置

$this->load->add_package_path("/mypackage");

在控制器中。不幸的是,这没有帮助,因为我想从包路径找到控制器:这似乎是一个鸡和蛋的问题。是否还有其他地方可以放置添加包路径调用,如index.php?

通过CI跟踪找到了它。结果证明你不能这么做。您可以将自己的控制器放在/application/controllers的子目录中,但不能将它们放在其他地方:特别是,正如所暗示的

这些元素可以是库、类、视图文件、帮助程序、模型或您自己的文件

您自己的文件不包括控制器。通过对CodeIgniter.php和Router.php进行更改,我最终能够让它在APPPATH之外查看环境设置。然而,我不喜欢做这种改变,所以我放弃了这些改变。我会把这个放在这里,以防其他人能从中受益

Router.php更改:

function _validate_request($segments)
{
...
  // Does the requested controller exist in the root folder?
  if (file_exists(APPPATH.'controllers/'.$segments[0].'.php')
      || file_exists(ENVIRONMENT.'/controllers/'.$segments[0].'.php')) // New bit here
  {
    return $segments;
  }
....
}
CodeIgniter.php更改,“围绕第246行:

if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'))
{
  // New bit here
  if ( ! file_exists(ENVIRONMENT.'/controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'))
  {
    show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
  }
  include(ENVIRONMENT.'/controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php');
} else {
  include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php');
}