下面的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]);
}
创始人微信
路漫漫其修远兮 吾将上下而求索添加创始人微信,一起交流心得
时间:2019年07月26日
时间:2017年03月09日
时间:2017年01月13日
时间:2019年06月11日
时间:2017年02月17日
评论