目录

要实现的功能

用表单里的提交过来的sort数据,批量修改表里的排序值

界面效果:

思路:

  1. 视图层表单提交数据主键=>sort值
  2. 控制器调用扩展类里的 public function cateSort($data, $obj) 方法

    //处理栏目排序 $data数组,$obj是实例化的表的对象
  3. cateSort验证数据并修改表里sort的值,如果提交的不是大于0的整数,就报错.

视图层

提交的数据排序数据是要 主键=>sort值

<input type="text" style="width:60px; text-align:center;" name="sort[{$cate.id}]" value="{$cate.sort}" />

 <form action="" method="post">
<table class="table table-bordered table-hover">
<thead class="">
<tr>
<th class="text-center" width="8%">ID</th>
<th class="text-center">分类名称</th>
<th class="text-center" width="10%">类型</th>
<th width="8%">显示到导航栏</th>
<th class="text-center" width="8%">排序</th>
<th class="text-center" width="14%">操作</th>
</tr>
</thead>
<tbody>
{volist name="cateRes" id="cate"}
<tr>
<td align="center">{$cate.id}</td>
<td><?php echo str_repeat('-', $cate['level']*8)?>{$cate.cate_name}</td>
<td align="center">
{if condition="$cate['cate_type'] eq 1"}
系统分类
{elseif condition="$cate['cate_type'] eq 2" /}
帮助分类
{elseif condition="$cate['cate_type'] eq 3" /}
网店帮助
{elseif condition="$cate['cate_type'] eq 4" /}
网店信息
{else /}
普通分类
{/if}
</td>
<td align="center">
{if condition="$cate['show_nav'] eq 1"}
<img src="__admin__/images/right.png" height="30">
{else /}
<img src="__admin__/images/wrong.png" height="25">
{/if}
</td>
<td align="center">
<input type="text" style="width:60px; text-align:center;" name="sort[{$cate.id}]" value="{$cate.sort}" />
</td>
<td align="center">
<a href="{:url('Cate/edit',array('id'=>$cate['id']))}" class="btn btn-primary btn-sm shiny">
<i class="fa fa-edit"></i> 编辑
</a>
{notin name="$cate['id']" value="1,2,3"}
<a href="#" onClick="warning('确实要删除吗', '{:url('Cate/del',array('id'=>$cate['id']))}')" class="btn btn-danger btn-sm shiny">
<i class="fa fa-trash-o"></i> 删除
</a>
{else /}
<a href="#" disabled="disabled" class="btn btn-danger btn-sm shiny">
<i class="fa fa-trash-o"></i> 删除
</a>
{/notin}
</td>
</tr>
{/volist}
<tr><td colspan="6" align="right" style="padding-right:16.5%;"><input class="btn btn-primary btn-sm shiny" type="submit" value="提交" /></td></tr>
</tbody>
</table>
</form>

打印提交的数据:

D:\xampp\htdocs\shop\thinkphp\library\think\Debug.php:165:

array (size=1)

'sort' =>

array (size=17)

20 => string '4' (length=1)

22 => string '3' (length=1)

21 => string '3' (length=1)

1 => string '2' (length=1)

3 => string '12' (length=2)

2 => string '11' (length=2)

4 => string '55' (length=2)

5 => string '54' (length=2)

7 => string '53' (length=2)

16 => string '52' (length=2)

17 => string '51' (length=2)

23 => string '2' (length=1)

25 => string '50' (length=2)

24 => string '50' (length=2)

19 => string '1' (length=1)

18 => string '1' (length=1)

26 => string '1' (length=1)

控制器里:

public function lst()
{
$Category = new Catetree();
$CategoryObj = db('Category');
if (request()->isPost()) {
$data = input('post.');
$cateres = $Category->cateSort($data['sort'], $CategoryObj);
if ($cateres === false) {
$this->error('只能填写大于0的数字');
}
$this->success('排序成功!', url('lst'));
}
$CategoryRes = $CategoryObj->order('sort DESC')->select();
$CategoryRes = $Category->Catetree($CategoryRes);
$this->assign([
'CategoryRes' => $CategoryRes,
]);
return view('list');
}

扩展函数里

D:\xampp\htdocs\shop\extend\catetree\Catetree.php

<?php
namespace catetree; use think\Validate; class Catetree
{
//处理栏目排序 $data数组,$obj是实例化的表的对象
public function cateSort($data, $obj)
{
foreach ($data as $k => $v) {
//数组里的排序值只能填写大于0的数字
$is_num = (!empty(intval($v)) && $v > 0 && Validate::is(intval($v), 'integer')) ? 1 : 0;
// dump($is_num);
if ($is_num == 0) {
return false;
}
$obj->update(['id' => $k, 'sort' => $v]);
}
}

第15课 栏目的排序处理(组件化) Thinkphp5商城第四季的更多相关文章

  1. 第9课 文章模块分析及建表 Thinkphp5商城第四季

    目录 文章模块的分析 表结构 文章模块的分析 表结构 CREATE TABLE `tp_cate` ( `id` smallint(6) NOT NULL AUTO_INCREMENT COMMENT ...

  2. 第3-5课 填充左侧菜单/品牌的添加 Thinkphp5商城第四季

    目录 左侧菜单的填充 品牌的添加 form标签里要加上method="post" enctype="multipart/form-data" form标签里如果 ...

  3. 第11课 文章分类(组件化开发) Thinkphp5商城第四季

    目录 思路: 控制器里 扩展类里: 视图层: 思路: 控制器查出所有数据后调用扩展类里的无限级分类 public function catetree($cateRes) 方法. 把排序好的数据传给视图 ...

  4. 第8课 Thinkphp 5 update判断修改成功与失败 Thinkphp5商城第四季

    没有修改数据时,判断修改成功与失败 如果提交时的数据库里之前的数据一样(即没有修改就提交表单),会返回0,此时 判断修改成功用$save !== false 这样才会提示修改成功. $save=db( ...

  5. 第7课 Thinkphp 5 模板输出变量使用函数 Thinkphp5商城第四季

    目录 1. 手册地址: 2. 如果前面输出的变量在后面定义的函数的第一个参数,则可以直接使用 3. 还可以支持多个函数过滤,多个函数之间用"|"分割即可,例如: 4. 变量输出使用 ...

  6. 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库

    第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1.  学习方法 2.  多涨见识 3.  比自己强的人一起,学习更强:比自己更聪明的人 ...

  7. DRF框架(八)——drf-jwt手动签发与校验、搜索过滤组件、排序过滤组件、基础分页组件

    自定义drf-jwt手动签发和校验 签发token源码入口 前提:给一个局部禁用了所有 认证与权限 的视图类发送用户信息得到token,其实就是登录接口,不然进不了登录页面 获取提交的username ...

  8. 面试指南」JS 模块化、组件化、工程化相关的 15 道面试题

    JS 模块化.组件化.工程化相关的 15 道面试题 1.什么是模块化? 2.简述模块化的发展历程? 3.AMD.CMD.CommonJS 与 ES6 模块化的区别? 4.它们是如何使用的? 5.exp ...

  9. 第15课 - make的隐式规则(上)

    第15课 - make的隐式规则(上) 1. 问题 如果把同一个目标的命令拆分的写到不同地方,会发生什么? 执行make all 这个实验表明了:如果同一个目标的命令拆分的写到不同地方,那么 make ...

随机推荐

  1. Python3基础(1)Python介绍、Python2 与Python3、变量、用户输入、if...else和for循环、while循环、break与continue

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ P ...

  2. spring boot整合redis,以及设置缓存过期时间

    spring-boot 整合 redis 注:redis服务器要先开启 pom文件: <dependency> <groupId>org.springframework.boo ...

  3. 阐述简称PO,VO,TO,BO,DAO,POJO

    PO(persistant object) 持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中 ...

  4. Django之model基础(增删改查)

    一.ORM 映射关系 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象二.创建表(建立模型) 在创建表之前的准备 ...

  5. a标签嵌套a标签效果的两种解决方案

    <!-- a标签进行嵌套的时候 --> <a href="#outer">outerA <a href="#inner">i ...

  6. 【Mood-13】Android --如何从初级工程师进化为高级工程师

    一  明确自我定位 现在你是初级工程师,但是你想当个高级工程师,所 以,你就要给自己定个目标,即:我是要成为高级工程师的男人.有了这个定位,并且努力朝着这个目标去努力,然后内心深处就会有一个感觉,这个 ...

  7. Spring Boot相关组件的添加

    在勾选相关组件后, pom.xml文件上发生了根本的变化 1.这是最简单的项目的pom文件 <?xml version="1.0" encoding="UTF-8& ...

  8. Windows下用cmd命令安装及卸载服务[转]

    第一种方法: 1. 开始 ->运行 ->cmd2. cd到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(Framework版本号按IIS配置) ...

  9. Mysql数据库插入时乱码问题解决

    我们在利用cmd的黑屏界面进行mysql数据的插入时往往会出现不能插入的情况,这个原因是因为我们系统虽然和服务器端即mysql的数据库采用的都是统一的utf8的编码,但是在传输的过程中会变成iso88 ...

  10. php使用GD库实现图片水印和缩略图——生成图片缩略图

    今天呢,就来学习一下在php中使用PD库来实现对图片水印的文字水印方法,不需要PS哦! 首先,准备素材 (1)准备一张图片 (2)准备一张水印(最好是透明的,即背景是白色底) (3)准备一中字体(在电 ...