Всем привет!
У меня проблема с Yii2. Научился работать с базовой частью, а с виджетами совсем беда, не понимаю их, выручайте!
Есть виджет:
Код (жмяк)class MenuWidget extends Widget{
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(){
// get cache
if($this->tpl == 'menu.php'){
$menu = Yii::$app->cache->get('menu');
if($menu) return $menu;
}
$this->data = Category::find()->indexBy('id')->asArray()->all();
$this->tree = $this->getTree();
$this->menuHtml = $this->getMenuHtml($this->tree);
// set cache
if($this->tpl == 'menu.php'){
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 class="group-item">
<a href="<?= \yii\helpers\Url::to(['category/view', 'id' => $category['id'], 'slug' => $category['slug']]) ?>">
<?= $category['name']?>
</a>
<?php if( isset($category['childs']) ): ?>
<div class="group-tree-icon expand"></div>
<ul class="sub-groups-list">
<?= $this->getMenuHtml(($category['childs']))?>
</ul>
<?php endif;?>
</li>
Проблема в
<?= $this->getMenuHtml(($category['childs']))?>
не знаю как сделать другой код для подкатегорий, все дублируется из родительской. Спасайте
Как надо написать чтоб для подкатегорий я мог прописать другой код?