[thinkPHP5项目实战_11]栏目修改
来源:互联网 发布:tftp 指定端口号 编辑:程序博客网 时间:2024/04/30 21:09
上一篇分享了栏目的循环输出和栏目删除。
如果开发过程中出现了页面不可用,请稍后再试,可以将application文件夹下的config.php文件中的调试模式打开,可以看到代码报错提示信息。
// 应用调试模式 'app_debug' => true,
1.模板和edit方法构建
在admin模块的view文件夹下新建edit.html文件,该模板用于接收点击修改后从数据库中获取的该栏目的信息,这里栏目的信息为cates
<form action="" method="post" id="myform" name="myform" enctype="multipart/form-data"> <!-- ID在数据表中是主键,在form表单中新建一个隐藏的input文本框用于接收和存储栏目的ID,当点击提交时需要用此ID值对该栏目在数据库中的数据进行更新 --> <input type="hidden" name="id" value="{$cates.ID}"> <table class="insert-tab" width="100%"> <tbody> <tr> <th width="10%">栏目名称:</th> <td> <input class="common-text required" id="catename" name="catename" size="50" value="{$cates.catename}" type="text"> </td> </tr> <tr> <th>关键词:</th> <td> <input class="common-text" name="keywords" size="50" value="{$cates.keywords}" type="text"> </td> </tr> <tr> <th>栏目类型:</th> <td> <!-- 使用If条件判断对栏目类型进行判断 --> <input name="type" value="1" type="checkbox" {if condition="$cates.type eq 1" }checked='checked' {/if} /> 留言板</td> </tr> <tr> <th>内容:</th> <td> <textarea name="desc" class="common-textarea" id="desc" cols="30" style="width: 98%;" rows="10">{$cates.desc}</textarea> </td> </tr> <tr> <th></th> <td> <input class="btn btn-primary btn6 mr10" value="提交" type="submit"> <input class="btn btn6" onclick="history.go(-1)" value="返回" type="button"> </td> </tr> </tbody> </table></form>在Cate控制器中构建edit操作方法取回 :
public function edit() { return $this->fetch(); }
此时点击栏目列表上的跳转会显示cates未定义。
2.修改跳转和传参
在栏目列表上点击修改将该栏目的id传到当前控制器的edit操作方法,使用thinkPHP5助手函数url实现跳转和传参:
可以使用字符串和数组两种传参方式:
<a href="{:url('edit',array('id'=>$vo.ID))}">修改</a>或者使用字符串拼接
<a href="{:url('edit','id='.$vo.ID)}">修改</a>
3.获取栏目数据
跳转到修改页面后需要将查询的栏目信息渲染到模板上,因此需要从数据库中提取该栏目的信息
使用thinkPHP5提供的助手函数查询数据库信息,并将获取的结果使用assign方法赋值给cates:
public function edit() { //获取修改的信息 $id=input('id'); $cates = db('cate')->where('ID',$id)->find(); $this->assign('cates',$cates);//模板赋值 return $this->fetch(); }
此时在栏目列表上点击修改可以跳转到修改页面并能获取到该栏目的信息。
4.修改提交验证
修改完成后提交同样需要进行验证,validate下的Cate.php文件:
<?phpnamespace app\admin\validate;use think\Validate;class Cate extends Validate{ //验证规则 protected $rule = [ // catename验证,必须,长度不能超过25,名称不能重复 'catename' => 'require|max:25|unique:cate', ]; //验证提示 protected $message = [ 'catename.unique' => '栏目名称不能重复', 'catename.max' => '栏目名称不能大于5个字符', 'catename.require' => '栏目名称必须', ];}
在Cate控制器的edit操作方法添加验证,
验证成功则使用助手函数更新数据库,若栏目没有任何修改则回提示更新栏目失败
public function edit() { //获取修改的信息 $id=input('id'); $cates = db('cate')->where('ID',$id)->find(); $this->assign('cates',$cates);//模板赋值 //修改后提交 if(request()->isPost()){ $data=[ 'ID'=>input('id'), 'catename'=>input('catename'), 'keywords'=>input('keywords'), 'desc'=>input('desc'), 'type'=>input('type') ? input('type') : 0, ]; //验证 $validate = \think\Loader::validate('Cate'); if($validate->check($data)){ $res = \think\Db::name('cate')->update($data); if($res){ return $this->success('修改栏目成功','lists'); }else{ return $this->error('修改栏目失败'); } }else{ //验证失败输出提示信息 return $this->error($validate->getError()); } } return $this->fetch(); }
5.效果
阅读全文
0 0
- [thinkPHP5项目实战_11]栏目修改
- [thinkPHP5项目实战_09]后台添加栏目及验证
- [thinkPHP5项目实战_10]栏目列表输出和删除
- [thinkPHP5项目实战_15]创建文章读取栏目列表
- [thinkPHP5项目实战_24]前台页面导航栏目调用
- [thinkPHP5项目实战_21]管理员添加、删除和修改
- [thinkPHP5项目实战_06]引入前台页面
- [thinkPHP5项目实战_14]场景验证
- [thinkPHP5项目实战_16]文章列表展示
- [thinkPHP5项目实战_17]文章编辑
- [thinkPHP5项目实战_19]模型添加数据
- [thinkPHP5项目实战_20]友情链接功能完善
- [thinkPHP5项目实战_22]管理员登录
- [thinkPHP5项目实战_27]前台文章内容展示
- [thinkPHP5项目实战_30]留言板功能完善
- 项目实战No12 推荐关注栏目
- [thinkPHP5项目实战_02]命名空间的定义
- [thinkPHP5项目实战_04]命名空间的引入
- 【云隐课堂】【软件安装】基于Eclipse的ESP8266的工程软件编译开发环境(ESP-IDE)【windows】
- Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. > com.android.build.a
- log4net使用总结
- mono中文注释乱码
- 分布式任务调度框架技术调研
- [thinkPHP5项目实战_11]栏目修改
- C语言指针的实例体验
- C/C++ 大小端理解及转换
- hibernate sum求和(hql和sql)
- 使用Json的两种方式
- Oracle报错,ORA-28001: 口令已经失效
- poj 2104 K-th Number
- python简明教程里关于zip的一点解决办法
- 面向对象中的构造函数