Codeigniter 使用代码点火器控制器的添加程序包路径
我正在尝试使用$this->load->add_package_路径将新的子应用程序添加到我的CI应用程序中。我可以看到如何使用这个视图和这样的:只需放置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_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');
}