网站

thinkphp5 栏目排序功能

分类 :thinkphp5     2020-06-24 人气:0 0条评论

模板中

下面的input是每篇文章对应的表单
$vo.sort 默认值为99
$vo.id 直接用栏目的id

<td align="center"><input type="text" value="{$vo.sort}" name="sort[{$vo.id}]"></td>

控制器里面

$cate = new CateModel();
if(Request()->isPost()){
            $sorts = input('post.');
            foreach($sorts as  $k=>$v){                
                $cate->update(['id'=>$k,'sort'=>$v]);
            }
            $this->success('排序成功');
        }

$k的值是input中的$vo.id$v的值是input中的$vo.sort

目录查询时
只需要在查询语句中使用order('sort des'),即可以达到排序效果。

实现只更新变更的栏目

上面的会对所有的进行更新,相对占用资源多一些,下面改为只更新变更后的栏目
模板中多加一部分
也就是除原先的栏目列表外,再对里面的sort字段单独拿出来。
这里存放着未修改的sort内容。

{volist name='cateRes' id='vo'}
                            <input type="hidden" value="{$vo.sort}" name="sortPr[{$vo.id}]">
                            {/volist}

记得thinkphp模板中有一个存放变量的,但是忘了。

模型里面
这时候提交的内容里就有了我们修改后的sort值和未修改的值。

if(Request()->isPost()){
            $data = input('post.');
            //通过array_diff_assoc实现只更新变化后的排序内容
            $diffR = array_diff_assoc($data['sort'],$data['sortPr']);

只要将$diffR传进去修改就可以

foreach($diffR as  $k=>$v){                
                $cate->update(['id'=>$k,'sort'=>$v]);
            }

评论

大侠名号:   验证暗号: 点击我更换图片

继续阅读