/** * Adds a binding to this index. * * @param \Drupal\drupalmoduleupgrader\Routing\LinkBinding\LinkBinding $binding */ public function addBinding(LinkBinding $binding) { $id = $binding->getIdentifier(); if (isset($this->idiotBox[$id])) { $id .= '_' . $this->idiotBox[$id]++; } else { $this->idiotBox[$id] = 0; } $this->set($binding->getSource()->getPath()->__toString(), $binding); $binding->onIndexed($id, $this); }
/** * {@inheritdoc} */ public function build() { $link = parent::build(); $source = $this->getSource(); if ($source->isDefaultLocalTask()) { $link['base_route'] = $link['route_name']; } elseif ($source->isLocalTask()) { $default_task = $source->getDefaultTask(); if ($default_task) { $path = $default_task->getPath()->__toString(); if ($this->index->containsKey($path)) { $link['base_route'] = $this->index[$path]->getDestination()->getIdentifier(); } } } if ($source->hasParent()) { $parent = $source->getParent(); if ($parent->isLocalTask() || $parent->isDefaultLocalTask()) { $parent_id = $this->getParentID(); if ($parent_id) { unset($link['base_route']); $link['parent_id'] = $parent_id; } } } return $link; }