娜惩赤橡陇钱溜读敬借蚊裳蛋
站点信息只允许修改不允许删除
删除用于删除站点及用户的js代码后的index.html结构:
{include file="common@header"} <div class="x-nav"> <span class="layui-breadcrumb"> <a href="">首页</a> <a href="">系统设置</a> <a> <cite>站点管理</cite></a> </span> <a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" href="javascript:location.replace(location.href);" title="刷新"> <i class="layui-icon" style="line-height:30px">ဂ</i></a> </div> <div class="x-body"> <table class="layui-table layui-form"> <thead> <tr> <th width="40">ID</th> <th>站点名称</th> <th>关键字</th> <th>描述</th> <th>操作</th> </thead> <tbody class="x-cate"> <tr cate-id='1' fid='0' > <td>{$site.site_id}</td> <td> <i class="layui-icon x-show" status='true'></i> {$site.site_name} </td> <td> <i class="layui-icon x-show" status='true'></i> {$site.keywords} </td> <td> <i class="layui-icon x-show" status='true'></i> {$site.desc} </td> <td class="td-manage"> <button class="layui-btn layui-btn layui-btn-xs" onclick="x_admin_show('编辑','admin-edit.html')" ><i class="layui-icon"></i>编辑</button> </td> </tr> </tbody> </table> </div> <style type="text/css"> </style> <script> layui.use(['form'], function(){ form = layui.form; }); </script> </body> </html>
创建编辑操作
<?php namespace app\admin\controller; //引入公共控制器 use app\common\controller\Base; //引入模板 use app\common\model\Site as SiteModel; class Site extends Base { // 展示站点信息 public function index() { //通过模型进行查询并获取到站点信息,同时生成一个数据模型对象 $site=SiteModel::get(1); //模板赋值 将站点信息赋值刚给模板 举例直白点说: 例如 将查询到的数据赋值给一个变量 //将这个变量发送给一个html页面 这样在html界面就能使用这个变量输出数据了 // 第一种方法 $this->view->site=$site;//将查询出来的数据赋值给变量site 魔术方法set给模板赋值 // 第二种方法 // $this->view->assign('site',$site); // 渲染模板 return $this->view->fetch(); } //编辑站点信息 public function edit() { //编辑是基于查询的,需要先查询 $site=SiteModel::get(1); $this->view->assign('site',$site); return $this->view->fetch(); } }
点击编辑
编辑模板制作
打开x-admin 找到admin-edit 复制到视图目录 并改名为edit
打开上图所示的index.html 修改url信息
因为是在当前控制器下操作,所以直接给操作名即可
将
<button class="layui-btn layui-btn layui-btn-xs" onclick="x_admin_show('编辑','admin-edit.html')" ><i class="layui-icon"></i>编辑</button>
改为:
<button class="layui-btn layui-btn layui-btn-xs" onclick="x_admin_show('编辑','{:url(\"edit\")}')" ><i class="layui-icon"></i>编辑</button>
注意onclick=”x_admin_show(‘编辑’,'{:url(\”edit\”)}’)” >
必须进行转义 因为外层既有单引号又有双引号 所以用单引号或者双引号都不行
点击编辑
显示真实的数据
edit.html
{include file="common@header"} <div class="x-body"> <form class="layui-form"> <div class="layui-form-item"> <label for="username" class="layui-form-label"> 站点名称 </label> <div class="layui-input-inline"> <input type="text" id="username" name="username" required="" lay-verify="required" autocomplete="off" value="{$site.site_name}" class="layui-input"> </div> </div> <div class="layui-form-item"> <label for="phone" class="layui-form-label"> 关键字 </label> <div class="layui-input-inline"> <textarea name="" required lay-verify="required" placeholder="请输入" class="layui-textarea">{$site.keywords}</textarea> </div> </div> <div class="layui-form-item"> <label for="L_email" class="layui-form-label"> 站点描述 </label> <div class="layui-input-inline"> <textarea name="" required lay-verify="required" placeholder="请输入" class="layui-textarea">{$site.desc}</textarea> </div> </div> <div class="layui-form-item"> <label for="L_repass" class="layui-form-label"> </label> <button class="layui-btn" lay-filter="add" lay-submit=""> 保存 </button> </div> </form> </div> <script> layui.use(['form','layer'], function(){ $ = layui.jquery; var form = layui.form ,layer = layui.layer; //监听提交 form.on('submit(add)', function(data){ console.log(data); //发异步,把数据提交给php layer.alert("增加成功", {icon: 6},function () { // 获得frame索引 var index = parent.layer.getFrameIndex(window.name); //关闭当前frame parent.layer.close(index); }); return false; }); }); </script> </body> </html>
注意:关键字和站点描述原本模板使用的是layui的输入框,这里改成了文本域
访问layui官网 复制文本域代码即可
点击编辑
此时只需要将保存的逻辑实现即可,这里只需要写edit.html的下面这部分代码即可
<script> layui.use(['form','layer'], function(){ $ = layui.jquery; var form = layui.form ,layer = layui.layer; //监听提交 form.on('submit(add)', function(data){ console.log(data); //发异步,把数据提交给php layer.alert("增加成功", {icon: 6},function () { // 获得frame索引 var index = parent.layer.getFrameIndex(window.name); //关闭当前frame parent.layer.close(index); }); return false; }); }); </script>
修改后的edit.html
{include file="common@header"} <div class="x-body"> <form class="layui-form"> <div class="layui-form-item"> <label for="sitename" class="layui-form-label"> 站点名称 </label> <div class="layui-input-inline"> <input type="text" id="sitename" name="sitename" required="" lay-verify="required" autocomplete="off" value="{$site.site_name}" class="layui-input"> </div> </div> <div class="layui-form-item"> <label for="keywords" class="layui-form-label"> 关键字 </label> <div class="layui-input-inline"> <textarea name="keywords" id="keywords" required lay-verify="required" placeholder="请输入" class="layui-textarea">{$site.keywords}</textarea> </div> </div> <div class="layui-form-item"> <label for="desc" class="layui-form-label"> 站点描述 </label> <div class="layui-input-inline"> <textarea name="desc" id="desc" required lay-verify="required" placeholder="请输入" class="layui-textarea">{$site.desc}</textarea> </div> </div> <div class="layui-form-item"> <label for="L_repass" class="layui-form-label"> </label> <button class="layui-btn" lay-filter="add" lay-submit=""> 保存 </button> </div> </form> </div> <script> layui.use(['form','layer'], function(){ $ = layui.jquery; var form = layui.form ,layer = layui.layer; //监听提交 form.on('submit(add)', function(data){ console.log(data); //发异步,把数据提交给php $.post("{:url('doEdit')}",{ 'site_name':$('#sitename').val(), 'keywords':$('#keywords').val(), 'desc':$('#desc').val() }) layer.alert("增加成功", {icon: 6},function () { // 获得frame索引 var index = parent.layer.getFrameIndex(window.name); //关闭当前frame parent.layer.close(index); }); return false; }); }); </script> </body> </html>
创建保存编辑的函数doEdit()
<?php namespace app\admin\controller; //引入公共控制器 use app\common\controller\Base; //引入模板 use app\common\model\Site as SiteModel; //引入请求类 用于在doEdit中接收通过POST提交的数据 //因为被封装到了facade中 所以引入方式如下 use think\facade\Request; class Site extends Base { // 展示站点信息 public function index() { //通过模型进行查询并获取到站点信息,同时生成一个数据模型对象 $site=SiteModel::get(1); //模板赋值 将站点信息赋值刚给模板 举例直白点说: 例如 将查询到的数据赋值给一个变量 //将这个变量发送给一个html页面 这样在html界面就能使用这个变量输出数据了 // 第一种方法 $this->view->site=$site;//将查询出来的数据赋值给变量site 魔术方法set给模板赋值 // 第二种方法 // $this->view->assign('site',$site); // 渲染模板 return $this->view->fetch(); } //编辑站点信息 public function edit() { //编辑是基于查询的,需要先查询 $site=SiteModel::get(1); $this->view->assign('site',$site); return $this->view->fetch(); } // 处理编辑操作 public function doEdit() { //使用request来获取edit.html提交的数据 halt(Request::param('desc')); } }
注意,这里使用了Request类 需要在头部引入
打开审查元素-编辑-保存-doedit.html 数据提交到doEdit()成功
完善doEdit(),Site.php
<?php namespace app\admin\controller; //引入公共控制器 use app\common\controller\Base; //引入模板 use app\common\model\Site as SiteModel; //引入请求类 用于在doEdit中接收通过POST提交的数据 //因为被封装到了facade中 所以引入方式如下 use think\facade\Request; class Site extends Base { // 展示站点信息 public function index() { //通过模型进行查询并获取到站点信息,同时生成一个数据模型对象 $site=SiteModel::get(1); //模板赋值 将站点信息赋值刚给模板 举例直白点说: 例如 将查询到的数据赋值给一个变量 //将这个变量发送给一个html页面 这样在html界面就能使用这个变量输出数据了 // 第一种方法 $this->view->site=$site;//将查询出来的数据赋值给变量site 魔术方法set给模板赋值 // 第二种方法 // $this->view->assign('site',$site); // 渲染模板 return $this->view->fetch(); } //编辑站点信息 public function edit() { //编辑是基于查询的,需要先查询 $site=SiteModel::get(1); $this->view->assign('site',$site); return $this->view->fetch(); } // 处理编辑操作 public function doEdit() { //使用request来获取edit.html提交的数据 $siteName=Request::param('site_name'); $keywords=Request::param('keywords'); $desc=Request::param('desc'); //执行更新 // update(参数1,参数2) 参数1:更新的数据 字段=>值 参数二:更新的条件 字段=>值 //因为站点表中只有一个id 所以直接指定site_id=>1 SiteModel::update([ 'site_name'=>$siteName, 'keywords'=>$keywords, 'desc'=>$desc ],[ 'site_id'=>1 ]); } }
修改数据
修改成功
箱仿辨接倪烩彼氏鹅来父快淳