您好,登錄后才能下訂單哦!
小編給大家分享一下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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。