首先是表格(cate.html)这一块我们要单独摘出来,放入到一个单独页面当中,方便我们数据的请求。
其中cateajaxpage.html的内容为:
{volist name="news" id="vo"} ID 分类名称 排序 操作 {volist name="$vo.children" id="vo1"} {$vo.id} {$vo.name} {/volist} {/volist} {$vo1.id} |————{$vo1.name}
这里因为使用了无限级分类得到多维数组的技术,所以会有两个volist,如果你不太懂无限级分类的话可以分配过来一个普通的数据过来,重点是:
这句在显示排序值得同时,为每一个input框设置了一个name值,这个值就是分类的id值,通过这种方式,可以为列表当中的所有input框进行区分,且能通过数据库获取到对应的分类。
回到cate.html,写Ajax:
$("#changeOrder").click(function(event) {
/* Act on the event */
var json = {};
$("input").not('#top-search').each(function(index, el) {
json[$(this).attr('name')] = $(this).val();
});
$.ajax({
url: '{:url("admin/news/cate")}',
type: 'post',
data: json
})
.done(function(data) {
$(".table-bordered").html(data);
$(document).click();
})
});其中changeOrder是我们为排序按钮添加的id值,我们把每一组id、order都放进json变量当中,传递给控制器。
控制器代码:
public function cate()
{
$news_model = model("Newsfenlei");
if (request()->isAjax()) {
$post = input('post.');
foreach ($post as $key => $value) {
db("newsfenlei")->where('id',$key)->update(['order'=>$value]);
}
$list = db("newsfenlei")->order('order desc')->select();
$news = $news_model->getNews($list);
$this->assign("news",$news);
return view('cateajaxpage');
} else {
$list = db("newsfenlei")->order('order desc')->select();
$news = $news_model->getNews($list);
$this->assign("news",$news);
return view();
}
}