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.
		
		
		
		
		
			
		
			
				
					
					
						
							48 lines
						
					
					
						
							841 B
						
					
					
				
			
		
		
	
	
							48 lines
						
					
					
						
							841 B
						
					
					
				| <?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; | |
| 	} | |
| }
 | |
| 
 |