/** * @param \App\type $id * @return \App\ILinkSettings */ public function create($id) { $item = $this->menuItemDataSource->get($id, function (Selection $context) { $symlinkTable = ':menu_has_symlink.symlink'; $context->select("{$symlinkTable}.id, {$symlinkTable}.type"); $context->where("{$symlinkTable}.type != ?", MenuTypeConst::SYMLINK); $context->where("{$symlinkTable}.id IS NOT NULL"); }); return $this->menuLinkMap->get($item['type'])->create($item['id']); }
/** * @param int $sectionId * @param $module * @param MenuLinkMap $menuLinkMap * @return \App\Widget\MenuView */ public function create($sectionId, $module, MenuLinkMap $menuLinkMap) { $tree = $this->menuTreeFactory->create($sectionId); $tree->onNodeCreated[] = function ($node, $data) use($menuLinkMap) { $node->name = $data->name; $node->type = $data->type; $node->html = NULL; if ($this->menuItemHelper->isMenuItemLink($data->type)) { try { $node->link = $menuLinkMap->get($data->type)->create($data->id); } catch (InvalidArgumentException $e) { $node->link = NULL; } } else { $node->html = $data->html; } }; return $this->menuViewFactory->create($sectionId, $module, $tree); }