總想自己一個人做一個小的項目,但是不知道怎么著手,平時上班時總是做項目中某個部分的任務,沒有整體做一個項目,下面是我看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); }
1)看主模板里是否引入jquery
2)寫一下JS
$(function(){});
寫jquery的基本格式
$(function(){ alert(); });
3)要用JS發送異步
<input>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>cate_id}})"?value="{{$v->cate_order}}">
這個分類信息改成多少
<input>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); } ); }
現在整體完成,但是彈窗太丑,下節給大家分享彈窗安裝信息。
以上步驟是我學習的筆記,我把要操作的步驟或重點的記了下來,如果哪有不懂可以留言。謝謝大家支持。希望能為小白提供幫助,如果想看更多blog項目信息,關注我,下一篇繼續分享。
相關推薦:《laravel教程》