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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 【字段添加·思路分析】 > 涉及兩個數據表(models_field和test) 模板中獲取模型ID的方法:控制器中有id(為modelid)形參,所以{:input('id',0)}直接獲取即可 Db類更新用update方法 模型model類更新用save方法,但必須調研isUpdate方法 模型model類添加也是用save方法 ## 【打開緩沖區·讀取內容】 ~~~ // 參數設置,返回json格式,需調取不同字段模板文件 public function field_setting($fieldtype=''){ //打開緩沖區 ob_start(); //引入字段模板文件 include APP_PATH . 'admin/view/models_field/setting/' . $fieldtype . '/field_add.html'; $data_setting = ob_get_contents(); //清空緩沖區并關閉輸出緩沖 ob_end_clean(); //轉數組格式 $settings = array('setting'=>$data_setting); echo json_encode($settings); } ~~~ ## 【input接收數組,變量修飾符/a】 > input('post.sort/a') ~~~ if(request()->isPost()){ foreach (input('post.sort/a') as $key => $value) { Db::name('models_field')->where('id',$key)->update(['sort'=>$value]); } return success('排序更新成功!',url('index',array('tab'=>$tab,'id'=>$id))); } ~~~ ## 【返回模型管理·選項卡】 ~~~ <li><a href="{:url('models/index')}"> <i class="fa fa-mail-reply text-navy"></i>返回模型管理 </a></li> ~~~ # 【二級聯動·參數設置·點擊事件】 > 模板代碼: ~~~ <div class="form-group"> <label class="col-sm-2 control-label">字段類型</label> <div class="col-sm-10"> <select class="form-control m-b" name="formtype" onchange="field_setting(this.value)"> <option value="" selected>≡ 請選擇字段類型 ≡</option> <option value="text">單行文本</option> <option value="textarea">多行文本</option> <option value="editor">編輯器</option> <option value="box">選項</option> <option value="image">圖片</option> <option value="images">多圖片</option> <option value="number">數字</option> <option value="datetime">日期和時間</option> <option value="downfile">單文件上傳</option> <option value="downfiles">多文件上傳</option> </select> </div> </div> ~~~ > 二級聯動顯示位置: ~~~ <div class="form-group"> <label class="col-sm-2 control-label">參數設置</label> <div class="col-sm-10"> <div id="setting"> </div> </div> </div> ~~~ > 底部加載: ~~~ <script> function field_setting(formtype){ $.getJSON("{:url('field_setting')}",{fieldtype:formtype},function(data){ $('#setting').html(data.setting); }); } </script> ~~~ > 語法: jQuery.getJSON(url,data,success(data,status,xhr))該函數是簡寫的 Ajax 函數 getJSON() 方法使用 AJAX 的 HTTP GET 請求獲取 JSON 數據。 > 控制器代碼: ~~~ public function field_setting($fieldtype=''){ echo json_encode($fieldtype);//模板中顯示字符串信息 } ~~~ 下面,進一步完善二級聯動內容: 首先,在models_field模板文件夾下新建setting文件夾 其次,在setting文件夾下面,新建text、textarea、editor、box、image、number、datetime、downfile等字段類型的文件夾 第三,在這些文件夾下新建文件field_add.html 第四,field_add.html文件中添加相應的代碼內容(不同的字段有不同的屬性) 以text字段類型為例,文件中屬性: ~~~ <div class="col-md-12"> <div class="form-group"> <label class="col-sm-1 control-label">默認值</label> <div class="col-sm-11"> <input type="text" name="setting[defaultvalue]" class="form-control" value=""> </div> </div> <div class="form-group"> <label class="col-sm-1 control-label">密碼框</label> <div class="col-sm-11"> <input type="radio" name="setting[ispassword]" value="1"> 是 <input type="radio" name="setting[ispassword]" value="0" checked> 否 </div> </div> </div> ~~~ > 控制器代碼: ~~~ // 參數設置,返回json格式,需調取不同字段模板文件 public function field_setting($fieldtype=''){ //打開緩沖區 ob_start(); //引入字段模板文件 include APP_PATH . 'admin/view/models_field/setting/' . $fieldtype . '/field_add.html'; $data_setting = ob_get_contents(); //清空緩沖區并關閉輸出緩沖 ob_end_clean(); //轉數組格式 $settings = array('setting'=>$data_setting); echo json_encode($settings); } ~~~ > 添加新字段(控制器邏輯添加) ~~~ public function add(){ $data = input('post.'); //模型ID $modelid = $data['modelid']; //實例化字段模型 $modelsfieldModel = new ModelsFieldModel; if(request()->isPost()){ $resultId = $modelsfieldModel->addField($data); switch ($resultId) { case -1: return error('字段名已存在!'); break; case -2: return error('新字段添加失敗!'); break; default: return success('新字段添加成功!',url('index',array('id'=>$modelid,'tab'=>1))); break; } } } ~~~ > 模型中添加字段方法(模型中業務添加) ~~~ //添加字段 public function addField($data){ //對字段參數進行序列化 $setting = $data['setting']; $data['setting'] = serialize($setting); if(isset($setting[defaultvalue])){ $defaultvalue = $setting[defaultvalue]; } //模型ID $modelid = $data['modelid']; //根據模型ID獲取模型名 $modelname = Db::name('models')->where('id',$modelid)->value('tablename'); //獲取數據表前綴 $dbPrefix = confix('database.prefix'); //獲取副表名 $tablename = $dbPrefix.$modelname; //字段名 $fieldname = $data['field']; //檢測當前模型下字段名是否重復 $count = Db::name('models_field')->where('field',$fieldname)->where('modelid',$modelid)->count(); if($count){ return -1; }else{ //添加新字段 $modelsfield = new ModelsField; if($modelsfield->allowField(true)->save($data)){ //添加副表字段 }else{ return -2; } } } ~~~ ## 【刪除信息前彈出提示框·改寫JS代碼】 > layer.confirm有三個參數 layer.confirm('提示信息','圖標',function(index){……點確定,則執行相應代碼}); 完整代碼: ~~~ $(document).ready(function(){ $('input[type="checkbox"]').on('ifChecked',function(){ $(this).val('1'); }); $('input[type="checkbox"]').on('ifUnchecked',function(){ $(this).val('0'); }); //隱藏特殊標簽頁 $(".nav-tabs li").click(function(){ if($(this).attr('id')!='showtab'){ $('#showtab').attr('style','display:none'); } }); $("a[name='delete']").click(function(){ //獲取數據 var url = $(this).attr('href'); //彈出詢問框 layer.confirm('您確定要刪除數據嗎?',{icon:3, title:'提示'},function(index){ //異步提交 $.ajax({ type: "POST", dataType:"json", url:url, data:null, success:function(obj){ var icon_num = (obj.status==200) ? 1 : 2; if(obj.status==200 || obj.status==202){ layer.open({ content: obj.msg, btn: ['確定'], shade: 0.1, icon: icon_num, yes: function(index, layero){ if(obj.url){ location.href = obj.url; //跳轉指定地址 }else{ layer.close(index); } }, cancel: function(){ location.href = obj.url; //跳轉指定地址 }, }); } }, error:function(data){ layer.alert('網絡故障!'); } }); }); return false; }); }); ~~~
                  <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>

                              哎呀哎呀视频在线观看