1.建立controllers
該文件必須命名為 「Blog.php」,大寫 「H」。
<?php
namespace App\Controllers;
class Blog extends BaseController
{
public function index()
{
echo 'Hello World!';
}
}
2.建立Routes
app\Config\Routes.php
$routes->get('路徑', '控制器::方法');
$routes->get('/blog', 'blog::index');
/blog 是訪問的 URI
這意味著當使用者輸入 http://localhost/blog 時,此路由會被觸發。
(只能小寫開頭)
Blog::index 指向 Blog 控制器中的 index 方法。
控制器檔案應位於 app/Controllers/ 目錄中,文件名為 Blog.php。
(大小寫沒差)
3.呼叫blog控制器的其他方法(function)有兩種方法:/blog/<方法名>
手動設置(更精確控制,適合大型專案)$routes->get('/blog/A', 'Blog::A');
使用通配符匹配多個方法(function)$routes->get('/blog/(:any)', 'Blog::$1');
4.夾帶參數
$routes->get('/blog/(:any)/(:num)', 'Blog::$1/$2');
/blog/<方法名>/<數字>
Blog:指向 Blog 控制器。
$1:捕獲的第一部分((:any)),用作方法名稱。
$2:捕獲的第二部分((:num)),用作傳遞給方法的參數。
$routes->get('/blog/(:any)', 'Blog::$1');
不過實際上這個也可以抓到一個參數
雖然看似參數被方法占用了
public function bbb($id)
{
echo $id;
}
blog/bbb/123
// public/ ->Home的index
$routes->get('/', 'Home::index');
// public/blog ->blog的index
$routes->get('/blog', 'Blog::index');
// public/blog/(blog的任意方法) ->blog的blog的任意方法裡面
$routes->get('/blog/(:any)', 'Blog::$1'); // 更具體的 /blog 路由放在前面
// public/(home的任意方法) ->home的blog的任意方法裡面
$routes->get('/(:any)', 'Home::$1');
動態路由
您可以在路由中使用動態部分來捕獲 URL 中的變量。這些動態部分可以是:
(:any):匹配任何字符(包括 /)
(:segment):匹配單個段(即由 / 分隔的部分,並且不能匹配 /)
(:num):只匹配數字
(:alpha):只匹配字母
(:alphanum):匹配字母和數字
/Config/app.php*
public string $permittedURIChars = 'a-z 0-9~%.:_-一-龥()';
這樣,您就能夠在 URL 中傳遞中文參數,並且 CodeIgniter 路由能夠正確處理它。