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

                # TP5實戰技巧---整合基類 化繁為簡 >[warning] 接上節 TP5實戰技巧---開發思路 引路造橋 [TOC] ## 細化拆分功能方法 豐富基類方法庫 我們把常用的控制器方法封裝到基類 ~~~ /** * Power by Mikkle * QQ:776329498 * @param string $code * @param array $data * @param string $msg * @return array */ static public function showReturnCode($code = '', $data = [], $msg = '') { $return_data = [ 'code' => '500', 'msg' => '未定義消息', 'data' => $code == 1001 ? $data : [], ]; if (empty($code)) return $return_data; $return_data['code'] = $code; if(!empty($msg)){ $return_data['msg'] = $msg; }else if (isset(ReturnCode::$return_code[$code]) ) { $return_data['msg'] = ReturnCode::$return_code[$code]; } return $return_data; } static public function showReturnCodeWithOutData($code = '', $msg = '') { return self::showReturnCode($code,[],$msg); } /** * 數據庫字段 網頁字段轉換 * #User: Mikkle * #Email:776329498@qq.com * #Date: * @param $array 轉化數組 * @return 返回數據數組 */ protected function buildParam($array=[]) { $data=[]; if (is_array($array)&&!empty($array)){ foreach( $array as $item=>$value ){ $data[$item] = $this->request->param($value); } } return $data; } ~~~ >[info] 這些方法貌似比較簡單 > 那么我們能不能封裝一些復雜的方法呢 > 其實沒有什么能難的到萬能的yuan們 下面 我嘗試把上一節的操作 嘗試封裝一個方法 ~~~ /** * 快速修改 * #User: Mikkle * #Email:776329498@qq.com * @param $array * @param bool|false $validate_name * @param string $model_name * @return array 返回code碼 */ protected function editData($parameter = false, $validate_name = false, $model_name = false, $save_data = []) { if (empty($save_data)) { if ($parameter != false && is_array($parameter)) { $data = $this->buildParam($parameter); } else { $data = $this->request->post(); } } else { $data = $save_data; } if (!$data) return $this->showReturnCode(1004); if ($this->checkLoginToken() && !isset($data['uuid'])) $data['uuid'] = $this->uuid; if ($validate_name != false) { $result = $this->validate($data, $validate_name); if (true !== $result) return $this->showReturnCodeWithOutData(1003,$result ); } $model_edit = Loader::model($model_name); //dump($model_edit); if (!$model_edit) return $this->showReturnCode(1010); return $model_edit->editData($data); } protected function doModelAction($param_data,$validate_name = false, $model_name = false,$action_name='editData'){ if ($validate_name != false) { $result = $this->validate($param_data, $validate_name); if (true !== $result) return $this->showReturnCodeWithOutData(1003, $result); } $model_edit = Loader::model($model_name); if (!$model_edit) return $this->showReturnCode(1010); return $model_edit->$action_name($param_data); } ~~~ ## editData方法解析 我詳細講一下 editData 這個方法的過程 >[info] 這段代碼中的參數 > $parameter = false, 控制器參數重整數組 > $validate_name = false, 驗證器名稱 > $model_name = false, 模型名稱 > $save_data = [] 操作的值 ### editData方法取值部分 我們先看一下這段代碼的第一部分 1. 判斷是否存在已經給定的值 2. 判斷數據重整數組是否存在 ~~~ //判斷是否存在已經給定的值 if (empty($save_data)) { //判斷數據重整數組是否存在 if ($parameter != false && is_array($parameter)) { $data = $this->buildParam($parameter); } else { $data = $this->request->post(); } } else { $data = $save_data; } //把關看看數據是否存在 if (!$data) return $this->showReturnCode(1004); ~~~ > if ($this->checkLoginToken() && !isset($data['uuid'])) $data['uuid'] = $this->uuid; 這部分是判斷是否全局登錄 如果登陸 附加上用戶的UUID ### editData方法數據驗證部分 ~~~ if ($validate_name != false) { $result = $this->validate($data, $validate_name); if (true !== $result) return $this->showReturnCodeWithOutData(1003,$result ); } ~~~ 這個沒有什么說的 官方示例 ### editData方法數據處理部分 ~~~ $model_edit = Loader::model($model_name); //dump($model_edit); if (!$model_edit) return $this->showReturnCode(1010); return $model_edit->editData($data); ~~~ >[info] 注意 : 這個方法中調用了model的 editData方法 > 要怎樣讓所有調用的model都有這個方法呢? > 呵呵 這不是廢話 肯定寫到model的基類里了 在model的基類里 添加 editData 數據處理方法 > 模型基類的創建 > http://www.hmoore.net/mikkle/thinkphp5_study/381919 ~~~ /** * 根據有Id修改信息 無Id 新增信息 * #User: Mikkle * #Email:776329498@qq.com * #Date: * @param $data * @return false|int|string * @throws */ public function editData($data){ if (isset($data['id'])){ if (is_numeric($data['id']) && $data['id']>0){ $save = $this->allowField(true)->save($data,[ 'id' => $data['id']]); }else{ $save = $this->allowField(true)->save($data); } }else{ $save = $this->allowField(true)->save($data); } if ( $save == 0 || $save == false) { $res=[ 'code'=> 1009, 'msg' => '數據更新失敗', ]; }else{ $res=[ 'code'=> 1001, 'msg' => '數據更新成功', ]; } return $res; } ~~~ > 這段代碼中 當ID存在為修改,當ID存在則新增。具體我就不解析了 ## 化繁為簡 破蛹而出 > 下面 我們的基類寫的差不多了,換句話說,我們的祖宗們供奉的差不多了 好日子就來了 控制器中然后調用我們使用的方法呢? * 當數值字段和數據庫字段相同時 控制器的代碼 一共三行 ~~~ //手機頁面添加項目 public function saveProject(){ $validate_name = "base/ProjectEnty.edit"; $model_name='base/Project'; return json($this->editData(false,$validate_name,$model_name)); } ~~~ >[danger] 當然驗證器和model你點自己寫 如果 你也可以想其他辦法 生成也不是難事 不過太懶你容易失業哦 另外這個控制器的方法也不是我寫的,沒有加我的注釋信息 * 當有附加數據時 多了幾行(包括ajax驗證) ~~~ public function addStructureData() { if($this->request->isAjax()){ $data = $this->request->post(); $data['project_guid']=$this->request->param('project_guid'); $validate_name='base/ProjectStructure.edit'; $model_name='base/ProjectStructure'; return json($this->editData(false,$validate_name,$model_name,$data)); } } ~~~ >[info] 如果字段不同時候 加上轉換數組就行 > $param = [ > 'username' => 'username', > 'password' => 'password', > ]; * 控制器中使用 doModelAction 方法 ~~~ /** * 登陸驗證 * Power by Mikkle * QQ:776329498 * @return array */ public function login(){ if ($this->request->isAjax()) { //數據庫字段 網頁字段轉換 $param = [ 'username' => 'username', 'password' => 'password', ]; $param_data = $this->buildParam($param); // $param_data['id'] = $this->request->get('id'); $check_login = $this->doModelAction($param_data, 'base/PersonnelUser.login', 'base/PersonnelUser', 'checkLogin'); if (!isset($check_login['code'])) $this->showReturnCodeWithSaveLog(1111); if ($check_login['code'] == 1001) { Session::set('menber_info', $check_login['data']); $this->setLoginGlobal($check_login['data'], 1); } return $check_login; }else{ return $this->fetch("login"); } } ~~~ >[danger] 本節最后的話: > 萬能的猿們 讓方便的道路上無止境 ... > 如果你還在開發,是時候停下來想一下 你到底想要的是什么 > 最后 那下面的代碼又是什么呢 > ~~~ > public static $system=[ > //companyList > 'companylist' => [ > 'action_name' => 'showEasyUiList', > 'model_name' => "base/PersonnelCompany", > 'validate_name' => '', > 'template_name' => 'company_list', > 'assign_data' => [ > 'title' => '公司管理列表', > 'dialog_url' => 'companyEdit', > 'data_url' => '', > ], > ], > 'companyedit' => [ > 'action_name' => 'showEasyUiEdit', > 'model_name' => "base/PersonnelCompany", > 'validate_name' => 'base/PersonnelCompany.edit', > 'template_name' => 'company_edit', > ], > ~~~ EditData相關教程 >[danger] 數據的添加和修改 >http://www.hmoore.net/mikkle/thinkphp5_study/440935 >[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); ~~~ >[danger] 加QQ群 735730057 有完整版擴展類庫下載!
                  <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>

                              哎呀哎呀视频在线观看