在html中实现家用电器商品分类,yii2框架中使用嵌套集合实现无限极商品分类
时间: 2024-05-07 12:20:02 浏览: 109
使用框架写的无限级分类
在 HTML 中实现家用电器商品分类可以使用无序列表 `<ul>` 与有序列表 `<ol>` 标签,同时结合 CSS 样式实现。以下是一个简单的例子:
```html
<ul class="category">
<li>冰箱
<ul>
<li>单门冰箱</li>
<li>双门冰箱</li>
<li>三门冰箱</li>
</ul>
</li>
<li>洗衣机
<ul>
<li>滚筒洗衣机</li>
<li>波轮洗衣机</li>
</ul>
</li>
<li>电视
<ul>
<li>液晶电视</li>
<li>等离子电视</li>
</ul>
</li>
</ul>
```
使用 Yii2 框架中的嵌套集合实现无限极商品分类可以先在数据库中创建一个分类表,包含字段 `id`、`name`、`parent_id`,其中 `parent_id` 表示父级分类的 ID。
然后在 Yii2 中创建一个名为 `Category` 的模型类,对应分类表。在 `Category` 模型类中使用 `yii\db\ActiveRecord` 类实现嵌套集合,示例如下:
```php
use yii\db\ActiveRecord;
use creocoder\nestedsets\NestedSetsBehavior;
class Category extends ActiveRecord
{
public function behaviors()
{
return [
'tree' => [
'class' => NestedSetsBehavior::className(),
'treeAttribute' => 'tree',
'leftAttribute' => 'lft',
'rightAttribute' => 'rgt',
'depthAttribute' => 'depth',
],
];
}
}
```
然后在视图文件中使用递归函数输出分类列表,示例如下:
```php
<?php
use yii\helpers\Html;
function renderNode($node) {
$result = '<li>' . Html::encode($node->name);
if ($node->children) {
$result .= '<ul>';
foreach ($node->children as $child) {
$result .= renderNode($child);
}
$result .= '</ul>';
}
$result .= '</li>';
return $result;
}
echo '<ul class="category">';
foreach ($categories as $category) {
echo renderNode($category);
}
echo '</ul>';
?>
```
在控制器中查询分类数据,将数据传递给视图文件,示例如下:
```php
public function actionIndex()
{
$categories = Category::find()->roots()->all();
return $this->render('index', [
'categories' => $categories,
]);
}
```
以上就是使用 Yii2 框架中的嵌套集合实现无限极商品分类的示例。
阅读全文