前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yii2中怎么输出二级菜单,根据我自己的样式建立的二级菜单

yii2中怎么输出二级菜单,根据我自己的样式建立的二级菜单

作者头像
贵哥的编程之路
发布2022-03-25 20:42:34
6210
发布2022-03-25 20:42:34
举报

sql:

代码语言:javascript
复制
CREATE TABLE `category` (
  `id` int(50) NOT NULL,
  `name` varchar(50) COLLATE utf8_vietnamese_ci NOT NULL COMMENT '分类名称',
  `pid` int(11) NOT NULL DEFAULT '0' COMMENT '父级分类id',
  `url` varchar(50) COLLATE utf8_vietnamese_ci NOT NULL COMMENT '访问地址',
  `status` int(2) NOT NULL DEFAULT '1' COMMENT '状态',
  `created_at` int(12) NOT NULL COMMENT '创建时间',
  `updated_at` int(12) NOT NULL COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_vietnamese_ci;

--
-- 转存表中的数据 `category`
--

INSERT INTO `category` (`id`, `name`, `pid`, `url`, `status`, `created_at`, `updated_at`) VALUES
(1, 'cyg', 0, 'www.baidu.com', 1, 1645603515, 1645603515),
(2, 'liwen', 1, 'www.bauc.om', 1, 1645604857, 1645604857);

helpers

代码语言:javascript
复制
<?php
namespace backend\helpers;
class Tree
{
	public static function getTree($list,$pid=0)
	{
		$tree=[];
		foreach($list as $row)
		{
			if($row['pid']==$pid)
			{
				$tree[$row['id']]=$row;
				$children=self::getTree($list,$row['id']);
				$children&&$tree[$row['id']]['children']=$children;
			}
		}
		return $tree;
	}
	public  static function getTrees($list,$pid=0,$level=0)
	{
		static $tree=[];
		foreach ($list as $k => $row) {
			if($row['pid']==$pid)
			{
			$row['name']=html_entity_decode(str_repeat("&nbsp;&nbsp;",$level))."|--".$row['name'];
			$tree[$row['id']]=$row;
			unset($list[$k]);
			self::getTrees($list,$row['id'],$level+1);
		}
		}
		return $tree;
	}
	
}
在这里插入图片描述
在这里插入图片描述

后台数据:

代码语言:javascript
复制
<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model backend\models\Category */
/* @var $form yii\widgets\ActiveForm */
$list=\backend\models\Category::find()->asArray()->all();
$tree=\backend\helpers\Tree::getTrees($list);
$tree=\yii\helpers\ArrayHelper::map($tree,'id','name');
array_unshift($tree,Yii::t('backend','parent'));
?>

<div class="category-form">

    <?php $form =ActiveForm::begin(); ?>

   <?= $form->field($model, 'id')->textInput() ?>

    <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'pid')->dropDownList($tree) ?>

    <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'status')->radioList(\backend\models\Category::getStatusArray()) ?>

    <?= $form->field($model, 'created_at')->textInput() ?>

    <?= $form->field($model, 'updated_at')->textInput() ?>

    <div class="form-group">
        <?= Html::submitButton(Yii::t('app', 'Save'), ['class' => 'btn btn-success']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>
在这里插入图片描述
在这里插入图片描述

前台视图:

代码语言:javascript
复制
<ul class="nav">

                <?php  $list=\backend\models\Category::find()->asArray()->all();
                    $categorys=\backend\helpers\Tree::getTree($list);
                ?>
                <?php  foreach($categorys as $category):?>
                    <li><a href="about.html"><?= $category['name']?></a>
                       <?php  foreach($category['children'] as $aa):?>
                        <ul class="two">
                            <li><a href="about.html"><?= $aa['name']?></a></li>
                        </ul>
                         <?php endforeach;?>
                    </li>
                <?php endforeach;?>
                </ul>

最终效果:

在这里插入图片描述
在这里插入图片描述
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com