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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # URL路由 [上一頁](39.html "上一頁")[下一頁](41.html "下一頁") ThinkPHP支持URL路由功能,要啟用路由功能,需要設置URL_ROUTER_ON 參數為true。開啟路由功能后,并且配置URL_ROUTE_RULES參數后,系統會自動進行路由檢測,如果在路由定義里面找到和當前URL匹配的路由名稱,就會進行路由解析和重定向。 3.0版本的路由支持做了增強,包含規則路由和正則路由支持。 **一、規則路由** 規則路由是由2.1版本的簡單路由進化而來,定義格式為: 格式1:'路由規則'=>'[分組/模塊/操作]?額外參數1=值1&額外參數2=值2...' 格式2:'路由規則'=>array('[分組/模塊/操作]','額外參數1=值1&額外參數2=值2...') 格式3:'路由規則'=>'外部地址' 格式4:'路由規則'=>array('外部地址','重定向代碼') **注意事項**: - 路由規則中如果以“:”開頭,表示動態變量,否則為靜態地址 - 格式2的額外參數可以傳入數組或者字符串 - 外部地址中如果要引用動態變量, 采用 :1、:2 的方式 - 路由規則支持變量的數字約束定義,例如:'news/:id\\d'=>'News/read' - 規則路由可以支持 全動態和動靜結合定義,例如':user/blog/:id'=>'Home/Blog/user' - 路由規則非數字變量支持排除,例如 'news/:cate^add|edit|delete'=>'News/category' - 路由規則中的靜態地址部分不區分大小寫 下面是規則路由的定義示例:`'URL_ROUTER_ON'???=>?true,?//開啟路由<br class="calibre5"></br>'URL_ROUTE_RULES'?=>?array(?//定義路由規則<br class="calibre5"></br>????'news/:year/:month/:day'?=>?array('News/archive',?'status=1'),<br class="calibre5"></br>????'news/:id'???????????????=>?'News/read',<br class="calibre5"></br>????'news/read/:id'??????????=>?'/news/:1',<br class="calibre5"></br>),`其中定義了3條路由規則,如果我們訪問下面的URL`http://serverName/index.php/news/8<br class="calibre5"></br>http://serverName/index.php/news/10`則會匹配到第二條規則路由,并解析到News模塊的read操作,而且后面的數字會傳入$_GET['id']變量。 如果我們訪問下面的URL`http://serverName/index.php/news/2012/01/08<br class="calibre5"></br>http://serverName/index.php/news/2012/01/15`則會匹配到第一條規則路由,并解析到News模塊的archive操作,而且會傳入year、month和day的GET變量。 第一條路由規則還可以改成`'news/:year/:month/:day/'=>'News/archive?status=1',`通常情況下,需要傳入數組參數的時候才會需要使用格式數組來定義 第三條路由規則是一個路由重定向,一般是用于網站改版后的URL遷移,如果之前的URL訪問規則是`http://serverName/index.php/news/read/8`那么會重定向到新的內部路由規則`http://serverName/index.php/news/8`這里之所以用了重定向路由是為了告訴搜索引擎這些地址已經發生改變了 而且以后是不需要保留。 有些情況下,可能會存在沖突,假如要支持通過標識來訪問文章,`http://serverName/index.php/news/hello_world`那么解析規則就會混淆,但是我們可以更改路由規則如下:`'URL_ROUTER_ON'???=>?true,?//開啟路由<br class="calibre5"></br>'URL_ROUTE_RULES'?=>?array(?//定義路由規則<br class="calibre5"></br>????'news/:year/:month/:day'?=>?array('News/archive',?'status=1'),<br class="calibre5"></br>????'news/:id\d'?????????????=>?'News/read',<br class="calibre5"></br>????'news/:name'?????????????=>?'News/read',<br class="calibre5"></br>????'news/read/:id'??????????=>?'/news/:1',<br class="calibre5"></br>),?`news/:id\d 規則表示當URL中id參數為數字時才會匹配 而 news/:name 規則定義 則會匹配所有的字符情況,這也是默認的情況,目前規則路由只區分數字和所有字符的情況,如果需要嚴格的類型約束,請采用正則路由定義規則。舉個例子,我們現在用規則路由來實現之前用空操作實現的城市功能,我們定義了City控制器如下:`class?CityAction?extends?Action{<br class="calibre5"></br>????public?function?city(){<br class="calibre5"></br>????????//讀取城市名<br class="calibre5"></br>?????????$cityName?=?$_GET['name'];<br class="calibre5"></br>????????echo?'當前城市'?.?$cityName;<br class="calibre5"></br>????}<br class="calibre5"></br>}`我們只需要定義下面的路由規則`'city/:name'??=>'City/city'`就能實現之前用空操作實現的同樣功能了。 接下來,我們就可以在瀏覽器里面輸入 http://serverName/index.php/City/beijing/ http://serverName/index.php/City/shanghai/ http://serverName/index.php/City/shenzhen/ 會看到依次輸出的結果是: 當前城市:beijing 當前城市:shanghai 當前城市:Shenzhen規則路由可以支持動態和靜態混合甚至是全動態,例如:`'URL_ROUTER_ON'???=>?true,?//開啟路由<br class="calibre5"></br>'URL_ROUTE_RULES'?=>?array(?//定義路由規則<br class="calibre5"></br>????':user/bolg/:id'???=>?'Blog/read',<br class="calibre5"></br>????':user/:blog_name'?=>?'Blog/read',<br class="calibre5"></br>),`第一條路由會匹配下列URL訪問 http://serverName/index.php/user1/blog/25/ http://serverName/index.php/username2/blog/245/ 并解析到Blog模塊的read操作方法 ,傳入user和id兩個GET參數。 第二條路由會匹配到下面的URL訪問 http://serverName/index.php/user1/hello_world http://serverName/index.php/username2/test_nme 同樣解析到Blog模塊的read操作方法,只是傳入的參數變成blog_name 一個GET參數。**二、正則路由** 正則路由可以實現更加復雜的路由定義,支持的定義格式如下: 格式1:'路由正則'=>'[分組/模塊/操作]?參數1=值1&參數2=值2...' 格式2:'路由正則'=>array('[分組/模塊/操作]','參數1=值1&參數2=值2...') 格式3:'路由正則'=>'外部地址' 格式4:'路由正則'=>array('外部地址','重定向代碼') 注意事項:- 正則路由規則必須以“/”開始和結束 - 格式2的參數可以傳入數組或者字符串 - 參數值和外部地址中可以用動態變量 采用 :1、 :2 的方式 下面是正則路由的定義示例:`'URL_ROUTER_ON'???=>?true,?//開啟路由<br class="calibre5"></br>'URL_ROUTE_RULES'?=>?array(?//定義路由規則<br class="calibre5"></br>????'/^blog\/(\d+)$/'????????=>?'Blog/read?id=:1',<br class="calibre5"></br>????'/^blog\/(\d+)\/(\d+)$/'?=>?'Blog/achive?year=:1&month;=:2',<br class="calibre5"></br>????'/^blog\/(\d+)_(\d+)$/'??=>?'blog.php?id=:1&page;=:2',<br class="calibre5"></br>),` [上一頁](39.html "上一頁")[下一頁](41.html "下一頁")
                  <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>

                              哎呀哎呀视频在线观看