創建路由規則的方法
Route::rule('路由表達式','路由地址','請求類型','路由參數(數組)','變量規則(數組)')
例如: Route::rule(‘demo/[:name]/[:course]’,‘index/index/demo’,‘GET’,[‘ext’=>‘html’],[‘name’=>’[a-zA-Z]+’,‘course’=>’\w+’]);
路由表達式
- 路由表達式格式:
路由表達式 = 靜態路由 + 動態變量
- 用表達式實例如下表所示
路由表達式 說明 ‘/’=>‘index’ 首頁 ‘demo’=>‘index/user/demo’ 純靜態地址 ‘demo/:id’=>‘index/user/demo’ 靜態地址+動態必選變量 'demo/[:name]=>‘index/user/demo’ 靜態地址+動態可選變量 'demo/:id/[:name]=>‘index/user/demo’ 靜態地址+動態變量[必選+可選] ‘:method/:id/[:name]’=>‘index/user/demo’ 全動態地址[路由表達式中全部內容均動態設置] 'demo/:id$=>‘index/user/demo’ 完全匹配[$是正則無字符,表示到此結束,後面再無內容] 'demo/:id=>‘index/user/demo?age=28&city=beijing’ 額外參數[指參數不通過路由表達式傳入,而是由原始URL傳入]
路由地址
路由地址,就是原始的、真實的訪問地址,即不啓用路由時,用普通模式訪問的地址(PATH_INFO)
該路由地址,不需要用/結尾
請求類型
Router::rule()中的請求類型必須大寫
請求類型 | 用途 | 描述 | URL格式 |
---|---|---|---|
GET | 從服務器端獲取數據 | 僅查詢,不修改,類似SELECT操作 | URL?參數表 |
POST | 在服務器端創建數據 | 提交併創建新信息,類似INSERT操作 | URL |
PUT | 改變服務器端數據 | 僅修改不創建,類似UPDATE操作 | URL?參數表 |
DELETE | 刪除服務器端資源 | 根據條件刪除數據,類似DELETE | URL?參數表 |
POST和PUT都可以向服務器端發送數據。POST作用在集合資源URL上,而PUT做用於具體資源上(URL/參數表)。如果操作前,可以在客戶端確定URL,就用PUT,否則就用POST。所以,幾乎所有提交操作都用POST發送,它不僅可以完成PUT和DELETE操作,而且無其它附加信息,URL地址更安全~~
便捷請求類型路由
請求類型 | 對應方法 | 實例 |
---|---|---|
GET | Router::get( ) | Router::get(‘read/:id’,‘index/user/read’) |
POST | Router::post( ) | Router::get(‘insert/:id’,‘index/user/insert’) |
PUT | Router::put( ) | Router::get(‘update/:id’,‘index/user/update’) |
DELETE | Router::delete( ) | Router::get(‘delete/:id’,‘index/user/delete’) |
任何類型 | Router::any( ) | Router::any(‘read/:id’,‘index/user/read’) |
路由參數
路由參數是指可以設置一些路由匹配的條件參數,主要用於驗證當前的路由規則是否有效
參數 | 說明 |
---|---|
method | 請求類型檢測,支持多個請求類型 |
ext | URL後綴檢測,支持匹配多個後綴 |
deny_ext | URL禁止後綴檢測,支持匹配多個後綴 |
https | 檢測是否https請求 |
domain | 域名檢測 |
before_behavior | 前置行爲(檢測) |
after_behavior | 後置行爲(執行) |
callback | 自定義檢測方法 |
merge_extra_vars | 合併額外參數 |
bind_model | 綁定模型(V5.0.1+) |
cache | 請求緩存(V5.0.1+) |
param_depr | 路由參數分隔符(V5.0.2+) |
ajax | Ajax檢測(V5.0.2+) |
pjax | Pjax檢測(V5.0.2+) |
注意:具體的路由限制用法可以參考官方使用手冊
變量規則
- 全局變量規則,即全部路由有效
Route::pattern(變量名,正則);
// 設置name變量規則(採用正則定義)
Route::pattern('name','\w+');
// 支持批量添加
Route::pattern([
'name' => '\w+',
'id' => '\d+',
]);
- 局部變量規則
局部變量規則,僅在當前路由有效,如果一個變量同時定義了全局規則和局部規則,局部規則會覆蓋全局變量的定義
Route::get('new/:name','News/read',[],['name'=>'\w+']);
- 完整URL規則
// 定義GET請求路由規則 並設置完整URL變量規則
Route::get('new/:id','News/read',[],['__url__'=>'new\/\w+$']);
- 組合變量規則
Route::get('item-<name>-<id>','product/detail',[],['name'=>'\w+','id'=>'\d+']);
//如果是可選變量
Route::get('item-<name><id?>','product/detail',[],['name'=>'[a-zA-Z]+','id'=>'\d+']);