🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 【编辑模型·思路分析】 > 编辑模型比较简单,最基本的增删改查操作 1、模板传入模型ID和选项卡ID 2、控制器判断,查询模型ID的指定信息,并分配给模板 3、模板编辑后,再提交给控制器保存处理 > 编辑模型,涉及两张表(模型表models记录信息;单独表名,如数据表test,修改成demo表) ## 【代码实现】 ~~~ // 控制器代码 <?php namespace app\admin\controller; use think\Controller; use think\Db; use app\admin\model\Models as ModelsModel; // 模型列表 public function index($tab = 1, $id = 0){ if (3 == $tab) { $info = Db::name('models')->where('id',$id)->find(); if ($info != null && is_array($info)) { $this->assign('info',$info); } } } // 编辑模型(控制器) public function edit($tab=1,$id=0){ if(request()->isPost()){ //获取原数据库表名 $oldTableName = Db::name('models')->where('id',$id)->value('tablename'); //当前提前新表名 $newTableName = trim(input('post.tablename')); $models = new ModelsModel; if($models->allowField(true)->isUpdate()->save(input('post.'))){ //判断数据库表名是否做了修改 if($oldTableName!=$newTableName){ if($models->editTableName($oldTableName,$newTableName)){ return success('模型编辑成功!',url('index',['tab'=>1])); }else{ return error('模型编辑失败!'); } }else{ return success('模型编辑成功!',url('index',['tab'=>1])); } }else{ return error('模型信息未变动或修改失败!'); } } } ~~~ ## 编辑独立数据表名(模型) ~~~ public function editTableName($oldTableName,$newTableName){ //获取数据表前缀 $dbPrefix = config('database.prefix'); Db::execute("RENAME TABLE `{$dbPrefix}{$oldTableName}` TO `{$dbPrefix}{$newTableName}` ;"); return true; } ~~~ ## 模板代码 ~~~ <div id="tab-3" class="tab-pane {if condition="input('tab',1) eq 3"}active{/if}"> <div class="panel-body"> <form method="post" class="form-horizontal" action="{:url('edit')}" data-type="ajax"> <input type="hidden" name="tab" value="3" /> <input type="hidden" name="id" value="{$info.id}" /> <div class="form-group"> <label class="col-sm-2 control-label">数据表</label> <div class="col-sm-10"> <input type="text" name="tablename" class="form-control" value="{$info.tablename}"> </div> </div> <!-- <div class="hr-line-dashed"></div> --> <div class="form-group"> <label class="col-sm-2 control-label">模型名称</label> <div class="col-sm-10"> <input type="text" name="name" class="form-control" value="{$info.name}"> </div> </div> <!-- <div class="hr-line-dashed"></div> --> <div class="form-group"> <label class="col-sm-2 control-label">分类模板</label> <div class="col-sm-10"> <select class="form-control m-b" name="category_template"> <option value="" >≡ 请选择模板 ≡</option> {volist name="files" id="vo"} <option value="{$vo.name}" {$vo.name == $info.category_template ? 'selected' : '' }>{$vo.name}</option> {/volist} </select> </div> </div> <!-- <div class="hr-line-dashed"></div> --> <div class="form-group"> <label class="col-sm-2 control-label">列表模板</label> <div class="col-sm-10"> <select class="form-control m-b" name="list_template"> <option value="" selected>≡ 请选择模板 ≡</option> {volist name="files" id="vo"} <option value="{$vo.name}" {$vo.name == $info.list_template ? 'selected' : '' }>{$vo.name}</option> {/volist} </select> </div> </div> <!-- <div class="hr-line-dashed"></div> --> <div class="form-group"> <label class="col-sm-2 control-label">内容模板</label> <div class="col-sm-10"> <select class="form-control m-b" name="show_template"> <option value="" selected>≡ 请选择模板 ≡</option> {volist name="files" id="vo"} <option value="{$vo.name}" {$vo.name == $info.show_template ? 'selected' : '' }>{$vo.name}</option> {/volist} </select> </div> </div> <!-- <div class="hr-line-dashed"></div> --> <div class="form-group"> <label class="col-sm-2 control-label">排序</label> <div class="col-sm-10"> <input type="text" name="sort" class="form-control" value="{$info.sort}"> </div> </div> <div class="hr-line-dashed"></div> <div class="form-group"> <div class="col-sm-4 col-sm-offset-2"> <button class="btn btn-primary" type="submit">提交</button> </div> </div> </form> </div> </div> </div> ~~~