<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                我們已經了解了如何定義路由規則,下面我們來舉個例子加深印象。 假設我們定義了News控制器如下(代碼實現僅供參考): ~~~ namespace Home\Controller; use Think\Controller; class NewsController extends Controller{ public function read(){ $New = M('New'); if(isset($_GET['id'])) { // 根據id查詢結果 $data = $New->find($_GET['id']); }elseif(isset($_GET['name'])){ // 根據name查詢結果 $data = $New->getByName($_GET['name']); } $this->data = $data; $this->display(); } public function archive(){ $New = M('New'); $year = $_GET['year']; $month = $_GET['month']; $begin_time = strtotime($year . $month . "01"); $end_time = strtotime("+1 month", $begin_time); $map['create_time'] = array(array('gt',$begin_time),array('lt',$end_time)); $map['status'] = 1; $list = $New->where($map)->select(); $this->list = $list; $this->display(); } } ~~~ 定義路由規則如下: ~~~ 'URL_ROUTER_ON' => true, //開啟路由 'URL_ROUTE_RULES' => array( //定義路由規則 'new/:id\d' => 'News/read', 'new/:name' => 'News/read', 'new/:year\d/:month\d' => 'News/archive', ), ~~~ 然后,我們訪問: `http://serverName/index.php/Home/new/8` 會匹配到第一個路由規則,實際執行的效果等效于訪問: `http://serverName/index.php/Home/News/read/id/8` 當訪問: `http://serverName/index.php/Home/new/hello` 會匹配到第二個路由規則,實際執行的效果等效于訪問: `http://serverName/index.php/Home/News/read/name/hello` 那么如果訪問: `http://serverName/index.php/Home/new/2012/03` 是否會匹配第三個路由規則呢?我們期望的實際執行的效果能夠等效于訪問: `http://serverName/index.php/Home/News/archive/year/2012/month/03` 事實上卻沒有,因為`http://serverName/index.php/Home/new/2012/`這個URL在進行路由匹配過程中已經優先匹配到了第一個路由規則了,把2012當成id的值傳入了,這種情況屬于路由規則的沖突,解決辦法有兩個: **1、調整定義順序** 路由定義改成: ~~~ 'URL_ROUTE_RULES' => array( //定義路由規則 'new/:year\d/:month\d' => 'News/archive', 'new/:id\d' => 'News/read', 'new/:name' => 'News/read', ), ~~~ 接下來,當我們再次訪問: `http://serverName/index.php/Home/new/2012/03` 的時候,達到了預期的訪問效果。所以如果存在可能規則沖突的情況,盡量把規則復雜的規則定義放到前面,確保最復雜的規則可以優先匹配到。但是如果路由規則定義多了之后,仍然很容易混淆,所以需要尋找更好的解決辦法。 **2、利用完全匹配功能** 現在我們來利用路由的完全匹配定義功能,把路由定義改成: ~~~ 'URL_ROUTE_RULES' => array( //定義路由規則 'new/:id\d$' => 'News/read', 'new/:name$' => 'News/read', 'new/:year\d/:month\d$' => 'News/archive', ), ~~~ 在規則最后加上$符號之后,表示完整匹配當前的路由規則,就可以避免規則定義的沖突了。對于規則路由來說,簡單的理解就是URL里面的參數數量或者類型約束要完全一致。 所以,如果我們訪問 `http://serverName/index.php/Home/new/2012/03/01` 的話,是不會匹配成功任何一條路由的。 **3、利用正則路由** 當然,解決問題的辦法總是不止一種,對于復雜的情況,我們不要忘了使用正則路由規則定義,在你找不到解決方案的時候,正則路由總能幫到你。 要實現上面的同樣路由功能的話,還可以用下面的規則定義: ~~~ 'URL_ROUTE_RULES' => array( //定義路由規則 '/^new\/(\d+)$/' => 'News/read?id=:1', '/^new\/(\w+)$/' => 'News/read?name=:1', '/^new\/(\d{4})\/(\d{2})$/' => 'News/achive?year=:1&month=:2', ), ~~~
                  <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>

                              哎呀哎呀视频在线观看