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

                # Api開發---接口數據的添加和修改 > 注:由于這是入門級課程 在本章的api數據操作課程中 將忽略 權限驗證 簽名驗證等 > [TOC] ### 我拿一段源碼講解一下 ~~~ public function applyEdit(){ header("Access-Control-Allow-Origin: *"); if($this->request->isPost()){ try{ $param_list =[ "company"=>"company/s", "address"=>"address/s", "contacts"=>"contacts/s", "jobs"=>"jobs/s", "mobile"=>"mobile/s", "tencent_code"=>"tencent_code/s", "desc"=>"desc/s", "event_key"=>"event_key/n", ]; $save_data = $this->buildParam($param_list); $save_data["originate"] = preg_replace('/http(s)?:\/\//',"",$this->request->server("HTTP_ORIGIN")); $save_data["open_id"] = $this->open_id; $validate_name = "base/system/SystemApply"; $model_name='base/system/SystemApply'; $result = $this->editData(false,$validate_name,$model_name,$save_data); if(isset($result["code"])){ if($result["code"]==1001){ $this->sendMessageToAdmin($save_data); } } return json($result); }catch (Exception $e){ Log::error($e->getMessage()); return self::showJsonReturnCodeWithOutData(1008,$e->getMessage()); } }else{ return self::showJsonReturnCodeWithOutData(1002); } } ~~~ ### 首先 我在代碼的前段增加允許跨域的代碼 ~~~ header("Access-Control-Allow-Origin: *"); ~~~ >[danger] 你可以修改"*"為允許跨域的域名 ### 我這里增加了只允許post方式提交數據 ~~~ f($this->request->isPost()){ //post提交 處理數據主代碼 }else{ //get方式 渲染提交頁面 return self::showJsonReturnCodeWithOutData(1002); } ~~~ ### 在主程序中try catch獲取異常 保證接口穩定性及記錄錯誤日志 ~~~ try{ // 處理數據主代碼 }catch (Exception $e){ Log::error($e->getMessage()); return self::showJsonReturnCodeWithOutData(1008,$e->getMessage()); } ~~~ PS:如果單單是接口 完全可以省略上一步的post判斷,只需要判斷非post提交拋出異常即可 ### 使用基類方法buildParam接收數據 ~~~ $param_list =[ "company"=>"company/s", "address"=>"address/s", "contacts"=>"contacts/s", "jobs"=>"jobs/s", "mobile"=>"mobile/s", "tencent_code"=>"tencent_code/s", "desc"=>"desc/s", "event_key"=>"event_key/d", ]; $save_data = $this->buildParam($param_list); ~~~ buildParam方法源碼參見前面課程 >[danger] 在$param_list數組中 數組的鍵值為你數據庫字段 數組的value值為接口接收時的字段 大家會發現 在值中 會有一個斜杠加上字符 如 /s /d 這個是強制轉換 這個就是第一層的數據驗證保護 不能忽略 常用的一般為 /s /d ThinkPHP5.0版本默認的變量修飾符是/s,如果需要傳入字符串之外的變量可以使用下面的修飾符,包括: | 修飾符號 | 轉換結果 | | --- | --- | | /s | 強制轉換為字符串類型 | | /d | 強制轉換為整型類型 | | /b | 強制轉換為布爾類型 | | /a | 強制轉換為數組類型 | | /f | 強制轉換為浮點類型 | >[danger] 如果你要獲取的數據為數組,請一定注意要加上 /a 修飾符才能正確獲取到。否則報錯. ### 附加要保存的數據 (根據程序需要 可選部分) ~~~ $save_data["originate"] = preg_replace('/http(s)?:\/\//',"",$this->request->server("HTTP_ORIGIN")); $save_data["open_id"] = $this->open_id; ~~~ 這里 originate 是用戶的來源網址 open_id 為基類中獲取到的用戶身份信息 ### 定義驗證類和模型類 使用editData方法保存數據 ~~~ $validate_name = "base/system/SystemApply"; $model_name='base/system/SystemApply'; $result = $this->editData(false,$validate_name,$model_name,$save_data); ~~~ >[danger] 注意 我這里使用了模型分層和驗證器的分層 其中驗證器的分層 要git最新的TP5源碼才不會報錯,其中版本5.0.11及以下都會報錯的 > 另:editData源碼參見前面課程 ### 判斷返回值 進行特殊處理 (根據程序需要 可選部分) ~~~ if(isset($result["code"])){ if($result["code"]==1001){ $this->sendMessageToAdmin($save_data); } } return json($result); ~~~ 如果 不需要額外處理什么 直接返回 editData結果即可 ~~~ return $this->editData(false,$validate_name,$model_name,$save_data); ~~~ 其實這樣就可以了 ### 另外 該方法同樣適用數據修改 $param_list 數組中 只要添加了主鍵字段 editData方法就會執行修改操作 > 附錄: > 模型和控制器的建立 > 參加TP5實戰開發前篇 >[info] 控制器基類之控制器基類常用方法 > http://www.hmoore.net/mikkle/thinkphp5_study/378509 >[info] 模型基類之常用數據處理方法 > http://www.hmoore.net/mikkle/thinkphp5_study/381920 >[danger] EditData快捷類庫的使用方法 >http://www.hmoore.net/mikkle/thinkphp5_study/462693 使用獨立的修改類庫 推薦使用 ~~~ $paramList = [ "company" => "company/s", "address" => "address/s", "contacts" => "contacts/s", "jobs" => "jobs/s", "mobile" => "mobile/s", "tencent_code" => "tencent_code/s", "desc" => "desc/s", "event_key" => "event_key/n", ]; $validate_name = "base/system/SystemApply"; $model_name = 'base/system/SystemApply'; $re = EditData::instance() ->setParameter($paramList) ->setAppend(["append" => "this is append"]) ->setValidate($validate_name) ->setModel($model_name) ->save();; return $re ? ReturnCode::jsonCode(1001) : ReturnCode::jsonCode(1003); ~~~
                  <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>

                              哎呀哎呀视频在线观看