/** * Remove a navigation item */ public function removeAction() { $itemName = $this->params->getRequired('name'); $itemType = $this->params->getRequired('type'); $user = $this->Auth()->getUser(); $navigationConfigForm = new NavigationConfigForm(); $navigationConfigForm->setUser($user); $navigationConfigForm->setShareConfig(Config::navigation($itemType)); $navigationConfigForm->setUserConfig(Config::navigation($itemType, $user->getUsername())); $form = new ConfirmRemovalForm(); $form->setRedirectUrl('navigation'); $form->setOnSuccess(function (ConfirmRemovalForm $form) use($itemName, $navigationConfigForm) { try { $itemConfig = $navigationConfigForm->delete($itemName); } catch (NotFoundError $e) { Notification::success(sprintf(t('Navigation Item "%s" not found. No action required'), $itemName)); return true; } catch (Exception $e) { $form->error($e->getMessage()); return false; } if ($navigationConfigForm->save()) { if ($itemConfig->type === 'menu-item') { $form->getResponse()->setRerenderLayout(); } Notification::success(sprintf(t('Navigation Item "%s" successfully removed'), $itemName)); return true; } return false; }); $form->handleRequest(); $this->renderForm($form, $this->translate('Remove Navigation Item')); }