/** * Create a simple hierarchy of links. */ function createLinkHierarchy($module = 'menu_test') { // First remove all the menu links. $menu_links = menu_link_load_multiple(); menu_link_delete_multiple(array_keys($menu_links), TRUE, TRUE); // Then create a simple link hierarchy: // - $parent // - $child-1 // - $child-1-1 // - $child-1-2 // - $child-2 $base_options = array('link_title' => 'Menu link test', 'module' => $module, 'menu_name' => 'menu_test'); $links['parent'] = $base_options + array('link_path' => 'menu-test/parent'); $links['parent'] = entity_create('menu_link', $links['parent']); $links['parent']->save(); $links['child-1'] = $base_options + array('link_path' => 'menu-test/parent/child-1', 'plid' => $links['parent']['mlid']); $links['child-1'] = entity_create('menu_link', $links['child-1']); $links['child-1']->save(); $links['child-1-1'] = $base_options + array('link_path' => 'menu-test/parent/child-1/child-1-1', 'plid' => $links['child-1']['mlid']); $links['child-1-1'] = entity_create('menu_link', $links['child-1-1']); $links['child-1-1']->save(); $links['child-1-2'] = $base_options + array('link_path' => 'menu-test/parent/child-1/child-1-2', 'plid' => $links['child-1']['mlid']); $links['child-1-2'] = entity_create('menu_link', $links['child-1-2']); $links['child-1-2']->save(); $links['child-2'] = $base_options + array('link_path' => 'menu-test/parent/child-2', 'plid' => $links['parent']['mlid']); $links['child-2'] = entity_create('menu_link', $links['child-2']); $links['child-2']->save(); return $links; }
/** * {@inheritdoc} */ public function submit(array $form, array &$form_state) { $form_state['redirect_route'] = new Url('menu_ui.overview_page'); // Locked menus may not be deleted. if ($this->entity->isLocked()) { return; } // Reset all the menu links defined by the menu_link.static service. $result = \Drupal::entityQuery('menu_link')->condition('menu_name', $this->entity->id())->condition('module', '', '>')->condition('machine_name', '', '>')->sort('depth', 'ASC')->execute(); $menu_links = $this->storage->loadMultiple($result); foreach ($menu_links as $link) { $link->reset(); } // Delete all links to the overview page for this menu. $menu_links = $this->storage->loadByProperties(array('link_path' => 'admin/structure/menu/manage/' . $this->entity->id())); menu_link_delete_multiple(array_keys($menu_links)); // Delete the custom menu and all its menu links. $this->entity->delete(); $t_args = array('%title' => $this->entity->label()); drupal_set_message(t('The custom menu %title has been deleted.', $t_args)); watchdog('menu', 'Deleted custom menu %title and all its menu links.', $t_args, WATCHDOG_NOTICE); }