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
841 B
49 lines
841 B
6 years ago
|
<?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 $menu_id;
|
||
|
|
||
|
public function run()
|
||
|
{
|
||
|
$menu = Menu::findOne($this->menu_id);
|
||
|
$items = $menu->items;
|
||
|
|
||
|
return $this->render('menu', [
|
||
|
'items' => $this->getMenu($items),
|
||
|
'menu' => $menu,
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $items MenuItem[]
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
private function getMenu($items, $paren_id = null)
|
||
|
{
|
||
|
$array = [];
|
||
|
foreach ($items as $item) {
|
||
|
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;
|
||
|
}
|
||
|
}
|