You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.1 KiB
49 lines
1.1 KiB
<?php |
|
/** |
|
* Created by Error202 |
|
* Date: 11.07.2018 |
|
*/ |
|
|
|
namespace backend\components\menu\widgets; |
|
|
|
use core\entities\menu\Menu; |
|
use core\entities\menu\MenuItem; |
|
use yii\base\Widget; |
|
|
|
class MenuEditorWidget extends Widget |
|
{ |
|
public int $menu_id; |
|
|
|
public function run(): string |
|
{ |
|
$menu = Menu::findOne($this->menu_id); |
|
$items = $menu->items; |
|
|
|
return $this->render('menu', [ |
|
'items' => $this->getMenu($items), |
|
'menu' => $menu, |
|
]); |
|
} |
|
|
|
/** |
|
* @param array $items |
|
* @param null $paren_id |
|
* @return array |
|
*/ |
|
private function getMenu(array $items, $paren_id = null): array |
|
{ |
|
$array = []; |
|
foreach ($items as $item) { |
|
/* @var $item MenuItem */ |
|
if ($item->parent_id != $paren_id) { |
|
continue; |
|
} |
|
$array[$item->id]['item'] = $item; |
|
if ($children = $item->children) { |
|
$array[$item->id]['children'] = $this->getMenu($children, $item->id); |
|
} |
|
} |
|
|
|
return $array; |
|
} |
|
}
|
|
|