<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                要使用`Route`類注冊路由必須首先在路由定義文件開頭添加引用(后面不再重復說明) ``` use think\facade\Route; ``` ## 注冊路由 最基礎的路由定義方法是: >[info] Route::rule('路由表達式', '路由地址', '請求類型'); 例如注冊如下路由規則(假設為單應用模式): ~~~ // 注冊路由到News控制器的read操作 Route::rule('new/:id','News/read'); ~~~ 我們訪問: ~~~ http://serverName/new/5 ~~~ 會自動路由到: ~~~ http://serverName/news/read/id/5 ~~~ 并且原來的訪問地址會自動失效。 可以在`rule`方法中指定請求類型(不指定的話默認為任何請求類型有效),例如: ~~~ Route::rule('new/:id', 'News/update', 'POST'); ~~~ >[danger] 請求類型參數不區分大小寫。 表示定義的路由規則在`POST`請求下才有效。如果要定義`GET`和`POST`請求支持的路由規則,可以用: ~~~ Route::rule('new/:id','News/read','GET|POST'); ~~~ 不過通常我們更推薦使用對應請求類型的快捷方法,包括: | 類型 | 描述 | 快捷方法 | | --- | --- | --- | | GET | GET請求 | get | | POST | POST請求 | post | | PUT | PUT請求 | put | | DELETE | DELETE請求 | delete | | PATCH | PATCH請求 | patch | | HEAD | HEAD請求 | head (`V6.0.13+`)| | \* | 任何請求類型 | any | 快捷注冊方法的用法為: >[info] Route::快捷方法名('路由表達式', '路由地址'); 使用示例如下: ~~~ Route::get('new/<id>','News/read'); // 定義GET請求路由規則 Route::post('new/<id>','News/update'); // 定義POST請求路由規則 Route::put('new/:id','News/update'); // 定義PUT請求路由規則 Route::delete('new/:id','News/delete'); // 定義DELETE請求路由規則 Route::any('new/:id','News/read'); // 所有請求都支持的路由規則 ~~~ 注冊多個路由規則后,系統會依次遍歷注冊過的滿足請求類型的路由規則,一旦匹配到正確的路由規則后則開始執行最終的調度方法,后續規則就不再檢測。 ## 規則表達式 規則表達式通常包含靜態規則和動態規則,以及兩種規則的結合,例如下面都屬于有效的規則表達式: ~~~ Route::rule('/', 'index'); // 首頁訪問路由 Route::rule('my', 'Member/myinfo'); // 靜態地址路由 Route::rule('blog/:id', 'Blog/read'); // 靜態地址和動態地址結合 Route::rule('new/:year/:month/:day', 'News/read'); // 靜態地址和動態地址結合 Route::rule(':user/:blog_id', 'Blog/read'); // 全動態地址 ~~~ >[danger] 規則表達式的定義以`/`為參數分割符(無論你的`PATH_INFO`分隔符設置是什么,請確保在定義路由規則表達式的時候統一使用`/`進行URL參數分割,除非是使用組合變量的情況)。 每個參數中可以包括動態變量,例如`:變量`或者`<變量>`都表示動態變量(新版推薦使用第二種方式,更利于混合變量定義),并且會自動綁定到操作方法的對應參數。 >[info] 你的URL訪問`PATH_INFO`分隔符使用`pathinfo_depr`配置,但無論如何配置,都不影響路由的規則表達式的路由分隔符定義。 ## 可選變量 支持對路由參數的可選定義,例如: ~~~ Route::get('blog/:year/[:month]','Blog/archive'); // 或者 Route::get('blog/<year>/<month?>','Blog/archive'); ~~~ 變量用`[ ]`包含起來后就表示該變量是路由匹配的可選變量。 以上定義路由規則后,下面的URL訪問地址都可以被正確的路由匹配: ~~~ http://serverName/index.php/blog/2015 http://serverName/index.php/blog/2015/12 ~~~ 采用可選變量定義后,之前需要定義兩個或者多個路由規則才能處理的情況可以合并為一個路由規則。 >[danger] 可選參數只能放到路由規則的最后,如果在中間使用了可選參數的話,后面的變量都會變成可選參數。 ## 完全匹配 規則匹配檢測的時候默認只是對URL從頭開始匹配,只要URL地址開頭包含了定義的路由規則就會匹配成功,如果希望URL進行完全匹配,可以在路由表達式最后使用`$`符號,例如: ~~~ Route::get('new/:cate$', 'News/category'); ~~~ 這樣定義后 ~~~ http://serverName/index.php/new/info ~~~ 會匹配成功,而 ~~~ http://serverName/index.php/new/info/2 ~~~ 則不會匹配成功。 如果是采用 ~~~ Route::get('new/:cate', 'News/category'); ~~~ 方式定義的話,則兩種方式的URL訪問都可以匹配成功。 如果需要全局進行URL完全匹配,可以在路由配置文件中設置 ~~~ // 開啟路由完全匹配 'route_complete_match' => true, ~~~ 開啟全局完全匹配后,如果需要對某個路由關閉完全匹配,可以使用 ~~~ Route::get('new/:cate', 'News/category')->completeMatch(false); ~~~ ## 額外參數 在路由跳轉的時候支持額外傳入參數對(額外參數指的是不在URL里面的參數,隱式傳入需要的操作中,有時候能夠起到一定的安全防護作用,后面我們會提到)。例如: ~~~ Route::get('blog/:id','blog/read') ->append(['status' => 1, 'app_id' =>5]); ~~~ 上面的路由規則定義中`status`和`app_id`參數都是URL里面不存在的,屬于隱式傳值。可以針對不同的路由設置不同的額外參數。 >[danger] 如果`append`方法中的變量和路由規則存在沖突的話,append方法傳入的優先。 ## 路由標識 如果你需要快速的根據路由生成URL地址,可以在定義路由的時候指定生成標識(但要確保唯一)。 例如 ~~~ // 注冊路由到News控制器的read操作 Route::rule('new/:id','News/read') ->name('new_read'); ~~~ 生成路由地址的時候就可以使用 ~~~ url('new_read', ['id' => 10]); ~~~ 如果不定義路由標識的話,系統會默認使用路由地址作為路由標識,例如可以使用下面的方式生成 ~~~ url('News/read', ['id' => 10]); ~~~ ## 強制路由 在路由配置文件中設置 ~~~ 'url_route_must' => true, ~~~ 將開啟強制使用路由,這種方式下面必須嚴格給每一個訪問地址定義路由規則(**包括首頁**),否則將拋出異常。 首頁的路由規則采用`/`定義即可,例如下面把網站首頁路由輸出`Hello,world!` ~~~php Route::get('/', function () { return 'Hello,world!'; }); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看