php商城产品排序,第15课 栏目的排序处理(组件化) Thinkphp5商城第四季

[TOC]

要实现的功能

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

2afda175552b62c8d7e46c33f8ec48a6.png

思路:

视图层表单提交数据主键=>sort值

控制器调用扩展类里的 public function cateSort($data, $obj) 方法 //处理栏目排序 $data数组,$obj是实例化的表的对象

cateSort验证数据并修改表里sort的值,如果提交的不是大于0的整数,就报错.

视图层

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

ID分类名称类型显示到导航栏排序操作

{volist name="cateRes" id="cate"}

{$cate.id}<?php echo str_repeat('-', $cate['level']*8)?>{$cate.cate_name}

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

{if condition="$cate['show_nav'] eq 1"}

right.png

{else /}

wrong.png

{/if}

编辑

{notin name="$cate['id']" value="1,2,3"}

删除

{else /}

删除

{/notin}

{/volist}

打印提交的数据:

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

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]);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值