protected function MenuLinkContent::getEntity in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/menu_link_content/src/Plugin/Menu/MenuLinkContent.php \Drupal\menu_link_content\Plugin\Menu\MenuLinkContent::getEntity()
Loads the entity associated with this menu link.
Return value
\Drupal\menu_link_content\MenuLinkContentInterface The menu link content entity.
Throws
\Drupal\Component\Plugin\Exception\PluginException If the entity ID and UUID are both invalid or missing.
1 call to MenuLinkContent::getEntity()
- MenuLinkContent::updateLink in core/
modules/ menu_link_content/ src/ Plugin/ Menu/ MenuLinkContent.php - Updates the definition values for a menu link.
File
- core/
modules/ menu_link_content/ src/ Plugin/ Menu/ MenuLinkContent.php, line 119 - Contains \Drupal\menu_link_content\Plugin\Menu\MenuLinkContent.
Class
- MenuLinkContent
- Provides the menu link plugin for content menu links.
Namespace
Drupal\menu_link_content\Plugin\MenuCode
protected function getEntity() {
if (empty($this->entity)) {
$entity = NULL;
$storage = $this->entityManager
->getStorage('menu_link_content');
if (!empty($this->pluginDefinition['metadata']['entity_id'])) {
$entity_id = $this->pluginDefinition['metadata']['entity_id'];
// Make sure the current ID is in the list, since each plugin empties
// the list after calling loadMultiple(). Note that the list may include
// multiple IDs added earlier in each plugin's constructor.
static::$entityIdsToLoad[$entity_id] = $entity_id;
$entities = $storage
->loadMultiple(array_values(static::$entityIdsToLoad));
$entity = isset($entities[$entity_id]) ? $entities[$entity_id] : NULL;
static::$entityIdsToLoad = array();
}
if (!$entity) {
// Fallback to the loading by the UUID.
$uuid = $this
->getUuid();
$loaded_entities = $storage
->loadByProperties(array(
'uuid' => $uuid,
));
$entity = reset($loaded_entities);
}
if (!$entity) {
throw new PluginException("Entity not found through the menu link plugin definition and could not fallback on UUID '{$uuid}'");
}
// Clone the entity object to avoid tampering with the static cache.
$this->entity = clone $entity;
$the_entity = $this->entityManager
->getTranslationFromContext($this->entity);
/** @var \Drupal\menu_link_content\MenuLinkContentInterface $the_entity */
$this->entity = $the_entity;
$this->entity
->setInsidePlugin();
}
return $this->entity;
}