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

                ## 3. 批量定義 >[info] ###批量定義:一次創建多個路由規則,有二種注冊方案: ![](https://box.kancloud.cn/aa5cf7becbe1ff03f88bf5d28ddf4784_752x133.png) * * * * * > 前面我們每調用一次Route:rule( )方法,僅創建了一個路由規則,本節課我們學習一次性創建多個路由規則的技巧。<br /> 說到"批量"定義,大家腦海中第一閃現的名詞是什么呢?相信你已經猜到了,是【數組】。<br/> 【數組】可以將相關的數據整合在一起,用來批量定義操作,再合適不過了~~ * * * * * ### 3-1. 動態批量定義規則語法: >[success] ####圖一:參數順序: ![](https://box.kancloud.cn/df11065b035826d945b244dbeadce9d7_822x163.png) >[success] ####圖一:參數說明: ![](https://box.kancloud.cn/fdaec3d530c1ceabbad19724ab678bb3_885x428.png) * * * * * ### 3-2. 動態批量定義規則的實例: >[info] 該實例涉及到模型操作,所以除了要創建控制器和路由配置文件外,還要創建模型文件 | 序號 | 文件用途 | 文件位置 | | :---: | --- | --- | |1| 控制器文件|/application/index/Index.php | |2| 路由配置文件|/application/route.php| |3| 模型文件|/application/model/Staff.php| * * * * * #### 第一步:創建模型文件,與數據表tp5_staff綁定 >[success] 因為模型通常為應用中各模塊所共享,所以在應用目錄中創建比較合適~~ ~~~ <?php namespace app\model; use think\Model; //導入模型Model類 class Staff extends Model { //此處為自定義模型類的代碼 } ~~~ >[warning] 因為Model類是抽象類,所以必須創建其子類,才可以使用模型類中的屬性和方法 * * * * * #### 第二步:創建控制器文件,并定義二個方法: >[success] 只有創建一個以上的方法,才可以演示批量路由注冊的效果 ~~~ <?php namespace app\index\controller; use think\Route; //導入路由類 use app\model\Staff; //導入自定義模型類 class Index { //創建demo方法,輸出歡迎信息 public function demo($study='kancloud', $name='php') { return '歡迎來'.$study.'學習'.$name.'開發技術!'; } //update()根據傳入主鍵更新記錄的salary字段信息 public function update($id) { $res = Staff::update(['salary'=>3900],['id'=>$id]); echo $res ? '更新成功!' : '更新失敗!'; } } ~~~ >[warning] ####代碼分析: 1. demo( )方法:根據輸入參數,輸出一段歡迎信息; 2. update( )方法:根據傳入的數據表主鍵,更新salary字段值; * * * * * #### 第三步:創建路由配置文件: >[success] 該文件中涉及到路由參數與變量規則,這二部分尚未學習,關鍵是理解語法,暫不必深究。 ~~~ <?php use think\Route; //導入路由類 //創建路由規則數組 $rule['update/:id'] = 'index/Index/update'; $rule['demo/:study/[:name]'] = ['index/Index/demo',['ext'=>'shtml'],['study'=>'[a-zA-z]{3,20}','name'=>'\w+']]; //將路由規則注冊到系統中 Route::rule($rule,'','GET',['ext'=>'html'],['id'=>'\d+']); ~~~ >[warning] ####代碼分析: 1. `use think\Route;`:首先要導入路由類,才可以調用其方法創建路由規則; 2. 由于路由規則較復雜,為便于閱讀,創建數組變量`$rule`,用于存放批量定義的路由規則; 3. `$rule['update/:id'] = 'index/index/update';`:當僅有路由地址,無路由參數和變量規則時,可直接將路由地址寫在字符串,不必創建數組; 4. `$rule['demo/:study/[:name]'] = ['index/index/demo'......;`:路由規則完整定義應放在數組中,數組中有三個元素:[1]路由地址 ,[2]路由參數,[3]變量規則,其中,變量規則部分采用了正則表達式; 5. `Route::rule($rule,'','GET',['ext'=>'html'],['id'=>'\d+']);`:路由注冊時,如果規則數組之外的參數設置,與規則數組內容有沖突,則以規則數組為主,如此例,外部定義的URL擴展名為:'html',規則數組中定義為'shtml',則最后生成的路由規則是'shtml'擴展名; * * * * * #### 第四步:路由測試: >[info] 測試第1個路由規則:demo/:study/[:name] * 瀏覽器地址欄輸入: ~~~ http://tp5.com/demo/lidaketang/thinkphp5.shtml ~~~ * 輸出結果如下: ~~~ 歡迎來lidaketang學習thinkphp5開發技術! ~~~ > URL參數lidaketang和thinkphp5自動與demo()方法的參數$study和$name綁定,并且必須使用該規則定義的路由擴展名:shtml,而不是外部定義的:html; * * * * * >[info] 測試第2個路由規則:update/:id * 瀏覽器地址欄輸入: ~~~ http://tp5.com/update/1016.html ~~~ * 顯示運行結果: ~~~ 更新成功! ~~~ >URL參數中的1016為更新主鍵,自動與update方法$id參數綁定。因為沒有在規則內部設置路由參數,所以使用外部定義的路由參數(本例為'ext'=>'html'),所以URL擴展名為:html ; * * * * * ### 3-3 靜態批量定義路由規則 >[info] ###動態路由規則由rule( )方法返回,靜態路由規則由路由規則數組返回。 * * * * * >[success] ###靜態規則:'路由表達式'=>['路由地址','[路由參數]',['變量規則']] **如沒有路由參數,請寫空數組:[ ],不允許留白。** #### 3-3-1:實例演示 > 我們僅須簡單修改一下上面的路由配置文件:route.php ~~~ <?php use think\Route; //導入路由類 //創建路由規則數組 $rule['update/:id'] = 'index/Index/update'; $rule['demo/:study/[:name]'] = ['index/Index/demo',['ext'=>'shtml'],['study'=>'[a-zA-z]{3,20}','name'=>'\w+']]; //將數組直接返回,完成路由注冊 return $rule; ~~~ #### 3-3-2:讓我們測試一下吧 >[info] 測試第1個路由規則:demo/:study/[:name] * 瀏覽器地址欄輸入: ~~~ http://tp5.com/demo/ldkt/thinkphp5.shtml ~~~ * 輸出結果動態注冊完全一致: ~~~ 歡迎來ldkt學習thinkphp5開發技術! ~~~ * * * * * >[info] 測試第2個路由規則:update/:id * 瀏覽器地址欄輸入: ~~~ http://tp5.com/update/1015.html ~~~ * 顯示運行結果: ~~~ 更新成功! ~~~ * * * * * ## 總結: >[success] ###批量定義是路由操作中,最頻繁的工作,請課下多多練習~~
                  <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>

                              哎呀哎呀视频在线观看