美文网首页
tp5 递归实现分类

tp5 递归实现分类

作者: zhaoxiaohui520 | 来源:发表于2020-03-01 16:55 被阅读0次

    控制器

    <?php
    namespace app\admin\controller;
    use app\admin\model\Cate as CateModel;
    use app\admin\model\Article as ArticleModel;
    use app\admin\controller\Common;
    class cate extends Common
    {
        public function lst()
        {
            
            $cate=new CateModel();
            if(request()->isPost()){
                $sorts=input('post.');
                foreach ($sorts as $k => $v) {
                    $cate->update(['id'=>$k,'sort'=>$v]);
                }
                $this->success('更新排序成功!',url('lst'));
                return;
            }
            $cateres=$cate->catetree();
            $this->assign('cateres',$cateres);
            return view();
        }
    
        public function add(){
            $cate=new CateModel();
            if(request()->isPost()){
                $data=input('post.');
                $validate = \think\Loader::validate('Cate');
                if(!$validate->scene('add')->check($data)){
                    $this->error($validate->getError());
                }
               $add=$cate->save($data);
               if($add){
                    $this->success('添加栏目成功!',url('lst'));
               }else{
                    $this->error('添加栏目失败!');
               }
            }
            $cateres=$cate->catetree();
            $this->assign('cateres',$cateres);
            return view();
        }
    
        public function edit(){
            $cate=new CateModel();
            if(request()->isPost()){
                $data=input('post.');
                $validate = \think\Loader::validate('Cate');
                if(!$validate->scene('edit')->check($data)){
                    $this->error($validate->getError());
                }
                $save=$cate->save($data,['id'=>$data['id']]);
                if($save !== false){
                    $this->success('修改栏目成功!',url('lst'));
                }else{
                    $this->error('修改栏目失败!');
                }
                return;
            }
            $cates=$cate->find(input('id'));
            $cateres=$cate->catetree();
            $this->assign(array(
                'cateres'=>$cateres,
                'cates'=>$cates,
                ));
            return view();
        }
    
        public function del(){
            $del=db('cate')->delete(input('id'));
            if($del){
                $this->success('删除栏目成功!',url('lst'));
            }else{
                $this->error('删除栏目失败!');
            }
        }
    
        public function delsoncate(){
            $cateid=input('id'); //要删除的当前栏目的id
            $cate=new CateModel();
            $sonids=$cate->getchilrenid($cateid);
            $allcateid=$sonids;
            $allcateid[]=$cateid;
            foreach ($allcateid as $k=>$v) {
                $article=new ArticleModel;
                $article->where(array('cateid'=>$v))->delete();
            }
            if($sonids){
            db('cate')->delete($sonids);
            }
        }
    }
    
    

    模型文件

    <?php
    namespace app\admin\model;
    use think\Model;
    class Cate extends Model
    {
      
        public function catetree(){
            $cateres=$this->order('sort desc')->select();
            return $this->sort($cateres);
        }
    
        public function sort($data,$pid=0,$level=0){
            static $arr=array();
            foreach ($data as $k => $v) {
                if($v['pid']==$pid){
                    $v['level']=$level;
                    $arr[]=$v;
                    $this->sort($data,$v['id'],$level+1);
                }
            }
            return $arr;
        }
    

    视图文件

     <tbody>
                                    {volist name="cateres" id="cate"}
                                        <tr>
                                            <td align="center">{$cate.id}</td>
                                            <td align="center"><input name="{$cate.id}" type="text" style="width:50px; text-align:center;" value="{$cate.sort}"></td>
                                            <td>{if condition="$cate['level'] neq 0"}|{/if}<?php echo str_repeat('-', $cate['level']*8)?>{$cate.catename}</td>
                                            <td align="center">
                                                {if condition="$cate['type'] eq 1"}
                                                文章列表
                                                {elseif condition="$cate['type'] eq 3" }
                                                图片列表
                                                {else /}
                                                单页
                                                {/if}
                                            </td>
                                            <td align="center">
                                                <a href="{:url('edit',array('id'=>$cate['id']))}" class="btn btn-primary btn-sm shiny">
                                                    <i class="fa fa-edit"></i> 编辑
                                                </a>
                                                <a href="#" onClick="warning('确实要删除吗', '{:url('del',array('id'=>$cate['id']))}')" class="btn btn-danger btn-sm shiny">
                                                    <i class="fa fa-trash-o"></i> 删除
                                                </a>
                                            </td>
                                        </tr>
                                    {/volist}
    
                                </tbody>
    
    
    image.png

    新闻视图

     <form class="form-horizontal" role="form" action="" method="post">
                            <div class="form-group">
                                <label for="username" class="col-sm-2 control-label no-padding-right">上级栏目</label>
                                <div class="col-sm-6">
                                    <select name="pid">
                                        <option value="0">顶级栏目</option>
                                        {volist name="cateres" id="cate"}
                                        <option value="{$cate.id}">{if condition="$cate['level'] neq 0"}|{/if}<?php echo str_repeat('-', $cate['level']*4)?>{$cate.catename}</option>
                                        {/volist}
                                    </select>
                                </div>
                                <p class="help-block col-sm-4 red">* 必填</p>
                            </div>
    

    修改视图

     <form class="form-horizontal" role="form" action="" method="post">
                            <input type="hidden" name="id" value="{$cates.id}" />
                            <div class="form-group">
                                <label for="username" class="col-sm-2 control-label no-padding-right">上级栏目</label>
                                <div class="col-sm-6">
                                    <select name="pid">
                                        <option value="0">顶级栏目</option>
                                        {volist name="cateres" id="cate"}
                                        <option {if condition="$cates['pid'] eq $cate['id']"}selected="selected"{/if} value="{$cate.id}">{if condition="$cate['level'] neq 0"}|{/if}<?php echo str_repeat('-', $cate['level']*4)?>{$cate.catename}</option>
                                        {/volist}
                                    </select>
                                </div>
                                <p class="help-block col-sm-4 red">* 必填</p>
                            </div>
    

    sql

    image.png

    相关文章

      网友评论

          本文标题:tp5 递归实现分类

          本文链接:https://www.haomeiwen.com/subject/imnckhtx.html