CodeIginter帶目錄層級的控制器,如何設置URI路由

如控制器建立以下目錄結構:php

若是是以上這種目錄分佈結構,即在controller文件夾下沒有相應的控制器文件。若是在瀏覽器中直接使用 【http://localhost】則找不到相應的控制器。瀏覽器

 

必須進行如下設置:app

第一:修改代碼:this

/**
 * 3.1.4 原始代碼 - [system/Router.php] - _set_default_controller();
 */
// if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php'))
// {
//  // This will trigger 404 later
//  return;
// }

/**
 * 3.1.4 修復代碼 - [system/Router.php] - _set_default_controller();
 *
 * 修復 - 不能將默認控制器放在子目錄中
 */
if ( ! file_exists(APPPATH . 'controllers/' . $this->directory . ucfirst($class) . '.php'))
{
    $path_arr = explode('/', trim($this->default_controller, '/'));

    $class = ucfirst($path_arr[1]);
    $method = isset($path_arr[2]) ? $path_arr[2]: 'index';

    if (file_exists(APPPATH . 'controllers/' . $this->directory . $path_arr[0]. '/' . $class . '.php'))
    {
        $this->directory .= $path_arr[0]. '/';
    }
}

  

第二:修改application/config/route.php文件中的默認控制器。3d

 控制器中的方法:code

* 能夠調用控制器中的任意方法。blog

 

最後:進行調用:io

 

 

 修復後,能夠默認調用子文件夾中的控制器。class

相關文章
相關標籤/搜索