Всем доброй ночи!
Есть категория в ней есть подкатегория , а также в ней есть еще одна категория.
Хочу сделать как на примере картинке
1 - Спойлер названия категории.
2 - В подкатегории они не должны быть активными только текст
3 - А вот под подкатегоиии должны быть чебоксами
Не могу понять как это реализовать.
В папке components есть файл CategoryWidget.php
ниже код
<?php
namespace app\components;
use Yii;
use yii\base\Widget;
use app\models\Category;
class CategoryWidget extends Widget
{
public $tpl;
public $model;
public $data;
public $tree;
public $menuHtml;
public function init()
{
parent::init();
if ($this->tpl === null) {
$this->tpl = 'category';
}
$this->tpl .= '.php';
}
public function run()
{
// get cache
// if ($this->tpl == 'category.php') {
// $menu = Yii::$app->cache->get('category');
// if ($menu) return $menu;
// }
$this->data = Category::find()
->indexBy('id')
->orderBy('sortOrder')
->asArray()
->all();
$this->tree = $this->getTree();
$this->menuHtml = $this->getMenuHtml($this->tree);
// set cache
// if ($this->tpl == 'category.php') {
// Yii::$app->cache->set('category', $this->menuHtml, 60);
// }
return $this->menuHtml;
}
protected function getTree()
{
$tree = [];
foreach ($this->data as $id => &$node) {
if (!$node['parent_id']) {
$tree[$id] = &$node;
} else {
$this->data[$node['parent_id']]['children'][$node['id']] = &$node;
}
}
return $tree;
}
protected function getMenuHtml($tree){
$str = '';
foreach ($tree as $category) {
$str .= $this->catToTemplate($category);
}
return $str;
}
protected function catToTemplate($category)
{
ob_start();
include __DIR__ . '/category_tpl/' . $this->tpl;
return ob_get_clean();
}
}
В папке components есть папка category_tpl, а в папке есть category.php
ниже его код
<ul>
<li>
<div class="spoiler-title"><?= $category['title'] ?></div>
<div class="spoiler-body">
<?php if (isset($category['children'])): ?><br/>
<?= $this->getMenuHtml($category['children']) ?>
<?php endif; ?>
</div>
</li>
</ul>
<br/>
во вьюхе происходит рендер
<?= CategoryWidget::widget(['tpl' => 'category']) ?>
Вот так у меня выводятся категории!
Как на первой картинки мне надо так реализовать!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ребята помогите, кто может!
Заранее спасибо!