【laravel】blog項目實戰筆記-后臺多級分類列表創建及Ajax異步修改分類排序

總想自己一個人做一個小的項目,但是不知道怎么著手,平時上班時總是做項目中某個部分的任務,沒有整體做一個項目,下面是我看php中文網的視頻整理的筆記,供大家參考。這是在windows環境下做的blog實戰項目,以下文章是項目的一部分,我一節一節分享的,要想看更多關注我,我會持續更新。

一、后臺文章分類頁多級分類列表

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>cate_order}}"&gt;??//加一個事件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>cate_id}})"?value="{{$v-&gt;cate_order}}"&gt;

這個分類信息改成多少

<input>cate_id}})"?value="{{$v-&gt;cate_order}}"&gt;?//能找到當前輸入的值到底多少

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-&gt;cate_order=$input['cate_order']; ????//更新數據庫 ????$res?=?$cate-&gt;update(); }

16)更新時,給前臺一個提示,這是我們給一個$data[]傳給前臺

public?function?changeorder(){ //用input方法接受前臺傳過來的值 $input=?Input::all(); $cate=CategroyModel::find($input['cate_id']); //然后改變order參數 $cate-&gt;cate_order=$input['cate_order']; //執行更新操作 $res=$cate-&gt;update(); ?if($res){ ????????$data=[ ????????????'status'=&gt;?0, ????????????'msg'=&gt;'更新成功!', ????????]; ????}else{ ????????$data=[ ????????????'status'=&gt;?1, ????????????'msg'=&gt;'更新失敗!', ????????]; ????} ???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); } ); }

現在整體完成,但是彈窗太丑,下節給大家分享彈窗安裝信息。

以上步驟是我學習的筆記,我把要操作的步驟或重點的記了下來,如果哪有不懂可以留言。謝謝大家支持。希望能為小白提供幫助,如果想看更多blog項目信息,關注我,下一篇繼續分享。

相關推薦:《laravel教程

以上就是【

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享