在笨3應用程序,我有這樣的目錄結構:默認控制器不工作
-Myproject
-application
-controllers
-home
Welcome.php //This is my controller inside home directory
如何設置歡迎控制器作爲默認的控制器? 我用下面的代碼
$route['default_controller'] = 'home/Welcome';
此路由適用於笨的早期版本。
在笨3應用程序,我有這樣的目錄結構:默認控制器不工作
-Myproject
-application
-controllers
-home
Welcome.php //This is my controller inside home directory
如何設置歡迎控制器作爲默認的控制器? 我用下面的代碼
$route['default_controller'] = 'home/Welcome';
此路由適用於笨的早期版本。
默認情況下,您不允許這樣做。爲了解決這個問題,你需要破解你的系統Router.php
:
笨/系統/核心/ Router.php
編輯的幾行代碼,使其變成這樣:
線1. if (!sscanf($this->default_controller, '%[^/]/%[^/]/%s', $directory, $class, $method) !== 2)
線2. if (! file_exists(APPPATH.'controllers'. DIRECTORY_SEPARATOR . $directory. DIRECTORY_SEPARATOR .ucfirst($class).'.php'))
線3 $this->set_directory($directory);
一旦你這樣做,你可以撥打下目錄的默認控制器。
$ route ['default_controller'] ='home/Welcome';
這隻適用於一個子文件夾。我如何做到這一點2個或更多的子文件夾? –
適用於CI 3.1。謝謝。 – Duque
您不需要更改CODEIGNITER系統文件夾中的任何文件。 Codeigniter允許開發人員擴展其功能。您可以創建一個名爲MY_Router.php的文件。
<?php
class MY_Router extends CI_Router {
protected function _set_default_controller() {
if (empty($this->default_controller)) {
show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.');
}
if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) {
$method = 'index';
}
if(is_dir(APPPATH.'controllers/'.$class)) {
$this->set_directory($class);
$class = $method;
if (sscanf($method, '%[^/]/%s', $class, $method) !== 2) {
$method = 'index';
}
}
if (! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php')) {
return;
}
$this->set_class($class);
$this->set_method($method);
$this->uri->rsegments = array(
1 => $class,
2 => $method
);
log_message('debug', 'No URI present. Default controller set.');
}
}
注:不要更改文件名。
嘗試使文件夾名稱'首頁'大寫 –
@ShaifulIslam不工作, – codex
在codeigniter 3 $ route ['default_controller'] ='welcome';必須不在子文件夾中,我認爲您必須爲該路由器或自定義路由器定製加載程序。 – user4419336