public function MenuLinkManager::addDefinition

public MenuLinkManager::addDefinition($id, array $definition)

Adds a new menu link definition to the menu tree storage.

Use this function when you know there is no entry in the tree. This is used for plugins not found through discovery to add new definitions.

Parameters

string $id: The plugin ID for the new menu link definition that is being added.

array $definition: The values of the link definition.

Return value

\Drupal\Core\Menu\MenuLinkInterface A plugin instance created using the newly added definition.

Throws

\Drupal\Component\Plugin\Exception\PluginException Thrown when the $id is not valid or is an already existing plugin ID.

Overrides MenuLinkManagerInterface::addDefinition

File

core/lib/Drupal/Core/Menu/MenuLinkManager.php, line 348

Class

MenuLinkManager
Manages discovery, instantiation, and tree building of menu link plugins.

Namespace

Drupal\Core\Menu

Code

public function addDefinition($id, array $definition) {
  if ($this->treeStorage->load($id)) {
    throw new PluginException("The menu link ID $id already exists as a plugin definition");
  }
  elseif ($id === '') {
    throw new PluginException("The menu link ID cannot be empty");
  }
  // Add defaults, so there is no requirement to specify everything.
  $this->processDefinition($definition, $id);
  // Store the new link in the tree.
  $this->treeStorage->save($definition);
  return $this->createInstance($id);
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Menu!MenuLinkManager.php/function/MenuLinkManager::addDefinition/8.1.x