您好,登录后才能下订单哦!
小编给大家分享一下laravel中blog项目之后台多级分类列表创建及Ajax异步修改分类排序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、后台文章分类页多级分类列表
1)添加多级分类注意cate_pid和cate_id一样就证明它在哪个分类下
2)添加个方法处理分类
public function getTree(){ }
3)在上面的方法里调下面的方法
$data = $this->getTree($categroy); public function index(){ $categroy = CategroyModel::all(); $data = $this->getTree($categroy,'cate_name','cate_pid','cate_id'); return view('home/categroy/index')->with('data',$data); }
4)下面打印一下看上面参数是否传进来
public function getTree($data){ dd($data); }
5)首先把cate_pid是0的给筛选出来,然后再次循环把cate_pid和cate_id相等的筛选出来,为了让方法更加强壮,我们想到用传参的方式,
public function getTree($data,'$file_pid=‘pid’,$file_id=‘id’,$pid=0){ $arr = array(); foreach($data as $key =>$value){ if($value->$file_pid==$pid){ $data[$key]["_cate_name"]=$data[$key]["cate_name"]; $arr[] = $data[$key]; foreach($data as $k=>$v{ if($value->$file_pid==$v->$file_id){ //新定义个字段把分类的下级定义出来 $data[$k]["_cata_name"]='-->'.$data[$k]["cate_name"] $arr[]=$data[$v]; } } } }
更好的优化代码:
把控制器里的整理数据的过程放到模型中
public static function tree(){ //用的是静态方法 $categroy = CategroyModel::all(); return (new CategroyModel)->getTree($categroy,'cate_name','cate_pid','cate_id'); } public function tree(){ $categroy = $this->all(); return $this->getTree($categroy,'cate_name','cate_pid','cate_id'); } public function getTree($data,'$file_pid=‘pid’,$file_id=‘’,$pid=0){ $arr = array(); foreach($data as $key =>$value){ if($value->$file_pid==$pid){ $data[$key]["_cate_name"]=$data[$key]["cate_name"]; $arr[] = $data[$key]; foreach($data as $k=>$v{ if($value->$file_pid==$v->$file_id){ //新定义个字段把分类的下级定义出来 $data[$k]["_cata_name"]='-->'.$data[$k]["cate_name"] $arr[]=$data[$v]; } } } }
控制器里的修改:
public function index(){ // $data= CategroyModel::Tree(); 不是静态方法不能用静态方法调用 调用静态方法 $data =(new CategroyModel)->Tree(); 调用不是静态方法 return view('home/categroy/index')->with('data',$data); }
二、后台文章分类页Ajax异步修改分类排序
1)看主模板里是否引入jquery
2)写一下JS
$(function(){});
写jquery的基本格式
$(function(){ alert(); });
3)要用JS发送异步
因为我要操作这个input表单时发送事件,
<input type="text" onchange="onchangeOrder()" value="{{$v->cate_order}}"> //加一个事件onchange,请求方法onchangeOrder方法
4)(2)是测试的,
function onangeOrder(){ alert(); }
5)接下来发送异步请求了
function onchangeOrder(){ $.post("",{});//第一个url,第二个参数,第三个是回调函数function($data){}回调函数里我们用$data接收 }
6)分配地址
function onchangeOrder(){ $.post("{{url('admin/cate/changeorder')}}",{},function($data){}); }
7)分配路由
Route::post('admin/changeorder','CategoryController@changeorder');
8)新建控制器CategoryController.php
public function changeorder(){ echo 123; }
9)把token值传给后台
function onchangeOrder(){ $.post("{{url('admin/cate/changeorder')}}",{'_token':'{{csrf_token()}}'},function($data){}); }
10)再传几个参数过去,第一个参数是_token参数,第二个参数是修改哪个参数的信息,第三个参数就是把这个分类信息改成多少
修改哪个条的信息
<input type="text" onchange="onchangeOrder({{$v->cate_id}})" value="{{$v->cate_order}}">
这个分类信息改成多少
<input type="text" onchange="onchangeOrder(this,{{$v->cate_id}})" value="{{$v->cate_order}}"> //能找到当前输入的值到底多少
11)下面的接受参数,第一个就是对象,第二个就是cate_id
function onchangeOrder(obj,cate_id){ $.post("{{url('home/cate/changeorder')}}",{'_token':'{{csrf_token()}}'},function($data){}); }
12)通过obj读取咱们当前输入的值到底是多少
那么咱们定义一个变量,cate_order 等于$()然后把obj传进去,然后它的.val()
function onchangeOrder(obj,cate_id){ var cate_order=$(obj).val(); $.post("{{url('home/cate/changeorder')}}",{'_token':'{{csrf_token()}}'},function($data){}); }
还有cate_id就是咱们传过来 的参数就不用处理了
13)下面却几个参数处理一下
function onchangeOrder(obj,cate_id){ var cate_order=$(obj).val(); $.post("{{url('home/cate/changeorder')}}",{'_token':'{{csrf_token()}}','cate_id':cate_id,'cate_order':cate_order},function($data){}); }
14)传给controller后怎么接受
public function changeorder(){ //用input方法接受前台传过来的值 $input= Input::all(); print_r( $input); }
15)然后取数据库对应cate_id数据,改变对应cate_order的值,然后跟新这条数据
public function changeorder(){ //用input方法接受前台传过来的值 $input= Input::all(); $cate=CategroyModel::find($input['cate_id']); //然后改变order参数 $cate->cate_order=$input['cate_order']; //更新数据库 $res = $cate->update(); }
16)更新时,给前台一个提示,这是我们给一个$data[]传给前台
public function changeorder(){ //用input方法接受前台传过来的值 $input= Input::all(); $cate=CategroyModel::find($input['cate_id']); //然后改变order参数 $cate->cate_order=$input['cate_order']; //执行更新操作 $res=$cate->update(); if($res){ $data=[ 'status'=> 0, 'msg'=>'更新成功!', ]; }else{ $data=[ 'status'=> 1, 'msg'=>'更新失败!', ]; } return $data; //别忘了返回值 }
17)获取回调函数的值
function onchangeOrder(obj,cate_id){ var cate_order=$(obj).val(); $.post( "{{url('home/cate/changeorder')}}", {'_token':'{{csrf_token()}}','cate_id':cate_id,'cate_order':cate_order}, function(data){ alert(data.msg); } ); }
以上是“laravel中blog项目之后台多级分类列表创建及Ajax异步修改分类排序”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。