TP5路由定義

創建路由規則的方法

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+']);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章