【laravel】blog项目实战笔记-后台多级分类列表创建及Ajax异步修改分类排序

发布时间 - 2021-09-08 00:00:00    点击率:

总想自己一个人做一个小的项目,但是不知道怎么着手,平时上班时总是做项目中某个部分的任务,没有整体做一个项目,下面是我看的视频整理的笔记,供大家参考。这是在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  # php  # jquery  # ajax  # Token  # 回调函数  # 循环  # JS  # 对象  # 事件  # 异步  # input  # windows  # 数据库  # 第一个  # 第二个  # 这是  # 几个  # 回调  # 第三个  # 分类信息  # 文章分类  # 的是  # 我要 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何快速启动建站代理加盟业务?  如何利用DOS批处理实现定时关机操作详解  如何获取免费开源的自助建站系统源码?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel如何使用Eloquent进行子查询  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Python高阶函数应用_函数作为参数说明【指导】  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  专业商城网站制作公司有哪些,pi商城官网是哪个?  什么是javascript作用域_全局和局部作用域有什么区别?  七夕网站制作视频,七夕大促活动怎么报名?  网站页面设计需要考虑到这些问题  Laravel如何自定义分页视图?(Pagination示例)  如何用PHP快速搭建高效网站?分步指南  深入理解Android中的xmlns:tools属性  重庆市网站制作公司,重庆招聘网站哪个好?  Laravel如何创建自定义Artisan命令?(代码示例)  如何确保FTP站点访问权限与数据传输安全?  JavaScript数据类型有哪些_如何准确判断一个变量的类型  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Python文件异常处理策略_健壮性说明【指导】  在Oracle关闭情况下如何修改spfile的参数  EditPlus中的正则表达式实战(5)  如何打造高效商业网站?建站目的决定转化率  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel如何使用.env文件管理环境变量?(最佳实践)  ,网页ppt怎么弄成自己的ppt?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何快速搭建安全的FTP站点?  如何在万网主机上快速搭建网站?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  linux写shell需要注意的问题(必看)  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  在线制作视频网站免费,都有哪些好的动漫网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  html5的keygen标签为什么废弃_替代方案说明【解答】  iOS UIView常见属性方法小结  详解Android图表 MPAndroidChart折线图  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  大连 网站制作,大连天途有线官网?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在Windows服务器上快速搭建网站?