Yii2.0实现无限极分类

14 篇文章 0 订阅
4 篇文章 0 订阅

1.视图文件   

 <table border="1">
        <tr>
            <td>id</td>
            <td>分类名称</td>
        </tr>
    <?php foreach($list as $k1=>$v1):?>
        <tr>
            <td><?php echo str_repeat('-',$v1['num']*8).$v1['id'];?></td>
            <td><?php echo str_repeat('-',$v1['num']*8).$v1['catename'];?></td>
        </tr>    
    <?php endforeach;?>

2.cate模型文件  

<?php
namespace app\models;
use Yii;
// 模板继承的下面这个是为了数据库操作
use yii\db\ActiveRecord;
use yii\db\Query;
/**
 * This is the model class for table "country".
 *
 * @property string $code
 * @property string $name
 * @property int $population
 */
class Cate extends ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'cate';
    }
    //得到全部的分类用于生成树状结构数据, 但是此时还是普通二位数组
    public function findCate(){
        $list = (new Query())
            ->from('cate')
            ->all();
        return $list;
    }
}

3.控制器文件   

<?php
namespace app\controllers;
use app\models\Cate;
use yii\web\Controller;
class CateController extends Controller{
    public function actionIndex(){
        //实例化对象
        $model = new Cate();
        $catelist = $model->findCate();
        //调用Cate方法传获取到的分类信息给该方法去处理
        $list = $this->actionDigui($catelist);
        return $this->render("index",["list"=>$list]);
    }
    private function actionDigui($data,$parent_id=0,$num=0){
        static $res = array();
        foreach($data as $v){
            if($v['parentid'] == $parent_id){
                $v['num'] = $num;
                $res[] = $v;
                $this->actionDigui($data,$v['id'],$num+1);
            }
        }
        return $res;
    }
}
?>

4.展示

5.数据库表

 

测试数据

 

喜欢的点赞加关注,老铁们一起加油! 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大帅同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值