Как сделать, чтобы при переходе по родительскому элементу отображались материалы дочерних категорий?

Всем здравствуйте! Подскажите как сделать так, чтобы при клике на родительский элемент получать вывод всех материалов дочерних категорий? Код приведенный ниже написан не мною, но я его использую для вывода меню категорий, данный код написан как виджет.
public $tpl;
    public $model;
    public $data;
    public $tree;
    public $menuHtml;

    public function init(){
        parent::init();
        if( $this->tpl === null ){
            $this->tpl = 'menu';
        }
        $this->tpl .= '.php';
    }

    public function run(){
        if($this->tpl == 'menu.php'){
            $menu = Yii::$app->cache->get('menu');
            if($menu) return $menu;
        }

        $this->data = Category::find()->indexBy('id')->orderBy('position')->asArray()->all();
        $this->tree = $this->getTree();
        $this->menuHtml = $this->getMenuHtml($this->tree);
        
        if($this->tpl == 'menu.php'){
            set cache
            Yii::$app->cache->set('menu', $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']]['childs'][$node['id']] = &$node;
        }
        return $tree;
    }

    protected function getMenuHtml($tree, $tab = ''){
        $str = '';
        foreach ($tree as $category) {
            $str .= $this->catToTemplate($category, $tab);
        }
        return $str;
    }

    protected function catToTemplate($category, $tab){
        ob_start();
        include __DIR__ . '/menu_tpl/' . $this->tpl;
        return ob_get_clean();
    }

Файл отвечающий за вывод меню категорий
<li>
	<a href="<?= \yii\helpers\Url::to(['category/view', 'alias_cat' => $category['alias']]) ?>">
	<?= $category['name'] ?>
	<?php if ( isset($category['childs']) ): ?>
		
	<?php endif; ?>
	</a>
	<?php if ( isset($category['childs']) ): ?>
		<ul>
			<?= $this->getMenuHtml($category['childs']) ?>
		</ul>
	<?php endif; ?>
</li>
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Max.Credit Санкт-Петербург
от 150 000 до 150 000 руб.
от 80 000 до 160 000 руб.
19 июн. 2019, в 15:48
300 руб./в час
19 июн. 2019, в 15:18
100000 руб./за проект
19 июн. 2019, в 15:14
500 руб./за проект