在codeigniter2 中,可以使用這些方法取的目前的 method 或 controller 名:
$this->router->fetch_directory().
$this->router->fetch_class().
$this->router->fetch_method()可是在CI3這些方法都作廢,改用新的方法取代
範例 URL:
http://example.com/auth/test/1/2?f=333
$this->router->directory //這個無作用,空字串
$this->router->class //aurh
$this->router->method //test
$this->uri->uri_string(); // auth/test/1/2
$this->uri->segment(0); // NULL
$this->uri->segment(1); // auth
$this->uri->segment(2); // test
$this->uri->segment(3); // 1
$this->uri->segment(4); // 2
$this->uri->segment(5); // NULL
$this->input->server("HTTP_HOST"); // example.com
$this->input->server("SERVER_NAME"); // example.com
上面兩個的差異可以參考Ian懶惰蟲的筆記,原則上,應使用HTTP_HOST較宜
$this->input->server("DOCUMENT_ROOT"); // /path/to/your/folder 結尾沒有 '/'
$this->input->server("SCRIPT_FILENAME"); // /path/to/your/folder/index.php
$this->input->server("REDIRECT_URL"); // /auth/test/1/2
$this->input->server("QUERY_STRING"); // f=333
$this->input->server("REQUEST_URI"); // /auth/test/1/2?f=333
$this->input->server("SCRIPT_NAME"); // /index.php
$this->input->server("PATH_INFO"); // /auth/test/1/2
$this->input->server("PHP_SELF"); // /index.php/auth/test/1/2
範例 省略method 的URL:,
http://example.com/auth/
省略了method,在 config/routes.php 中有這樣的設定
$route['default_controller'] = 'index';
預設CI3 router他會去尋找 index這個method
$this->router->class ; //aurh
$this->router->method; // index
$this->uri->uri_string(); // auth
print $this->uri->segment(1); // auth
print $this->uri->segment(2); // NULL
參考資料
[1] CI3 官網 http://www.codeigniter.com/userguide3/installation/upgrade_300.html
[2] http://stackoverflow.com/questions/14040738/get-controller-folder-name-in-codeigniter
原文 2015-08-19 19:16:02