ci控制器controller只支持1级目录,如需多级要扩展路由类

来源:互联网 发布:网络攻击的工作流程 编辑:程序博客网 时间:2024/04/29 19:30

core/Router.php

function _validate_request($segments){if (count($segments) == 0){return $segments;}// Does the requested controller exist in the root folder?if (file_exists(APPPATH.'controllers/'.$segments[0].'.php')){return $segments;}// Is the controller in a sub-folder?if (is_dir(APPPATH.'controllers/'.$segments[0])){// Set the directory and remove it from the segment array$this->set_directory($segments[0]);$segments = array_slice($segments, 1);if (count($segments) > 0){// Does the requested controller exist in the sub-folder?//如果没有发现 controllers/目录/文件名.php,则404。可见CI控制器只支持1级目录if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$segments[0].'.php')){if ( ! empty($this->routes['404_override'])){$x = explode('/', $this->routes['404_override']);$this->set_directory('');$this->set_class($x[0]);$this->set_method(isset($x[1]) ? $x[1] : 'index');return $x;}else{show_404($this->fetch_directory().$segments[0]);}}}else{// Is the method being specified in the route?if (strpos($this->default_controller, '/') !== FALSE){$x = explode('/', $this->default_controller);$this->set_class($x[0]);$this->set_method($x[1]);}else{$this->set_class($this->default_controller);$this->set_method('index');}// Does the default controller exist in the sub-folder?if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$this->default_controller.'.php')){$this->directory = '';return array();}}return $segments;}// If we've gotten this far it means that the URI does not correlate to a valid// controller class.  We will now see if there is an overrideif ( ! empty($this->routes['404_override'])){$x = explode('/', $this->routes['404_override']);$this->set_class($x[0]);$this->set_method(isset($x[1]) ? $x[1] : 'index');return $x;}// Nothing else to do at this point but show a 404show_404($segments[0]);}









0 0