【laravel】blog專案實戰筆記-後台多層分類清單建立及Ajax非同步修改分類排序

演明
發布: 2021-09-09 16:54:02
原創
1043 人瀏覽過

總是想自己一個人做一個小的項目,但是不知道怎麼著手,平時上班時總是做項目中某個部分的任務,沒有整體做一個項目,下面是我看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表單時發送事件,

 //加一个事件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參數,第二個參數是修改哪個參數的訊息,第三個參數就是把這個分類訊息改成多少

修改哪個條的資訊

登入後複製

這個分類資訊改成多少

 //能找到当前输入的值到底多少
登入後複製

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); } ); }
登入後複製

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

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

相關推薦:《laravel教學

以上是【laravel】blog專案實戰筆記-後台多層分類清單建立及Ajax非同步修改分類排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!