/**
  * {@inheritdoc}
  */
 public function convert($value, $definition, $name, array $defaults, Request $request)
 {
     if ($value) {
         try {
             return $this->menuLinkManager->createInstance($value);
         } catch (PluginException $e) {
             // Suppress the error.
         }
     }
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 public function build()
 {
     $items = [];
     $current_id = $this->active->getActiveLink('main')->getPluginId();
     while (!empty($current_id)) {
         $current_link = $this->linkManager->createInstance($current_id);
         /** @var MenuLinkContent $current_link */
         $link = new Link($current_link->getTitle(), $current_link->getUrlObject());
         $items[] = $link;
         $current_id = $current_link->getParent();
     }
     $breadcrumbs = new Breadcrumb();
     $breadcrumbs->setLinks(array_reverse($items));
     return $breadcrumbs->toRenderable();
 }
Пример #3
0
 /**
  * Test automatic reparenting of menu links.
  */
 function testMenuLinkReparenting($module = 'menu_test')
 {
     // Check the initial hierarchy.
     $links = $this->createLinkHierarchy($module);
     $expected_hierarchy = array('parent' => '', 'child-1' => 'parent', 'child-1-1' => 'child-1', 'child-1-2' => 'child-1', 'child-2' => 'parent');
     $this->assertMenuLinkParents($links, $expected_hierarchy);
     // Start over, and move child-1 under child-2, and check that all the
     // childs of child-1 have been moved too.
     $links = $this->createLinkHierarchy($module);
     /* @var \Drupal\Core\Menu\MenuLinkInterface $menu_link_plugin  */
     $this->menuLinkManager->updateDefinition($links['child-1'], array('parent' => $links['child-2']));
     // Verify that the entity was updated too.
     $menu_link_plugin = $this->menuLinkManager->createInstance($links['child-1']);
     $entity = \Drupal::entityManager()->loadEntityByUuid('menu_link_content', $menu_link_plugin->getDerivativeId());
     $this->assertEqual($entity->getParentId(), $links['child-2']);
     $expected_hierarchy = array('parent' => '', 'child-1' => 'child-2', 'child-1-1' => 'child-1', 'child-1-2' => 'child-1', 'child-2' => 'parent');
     $this->assertMenuLinkParents($links, $expected_hierarchy);
     // Start over, and delete child-1, and check that the children of child-1
     // have been reassigned to the parent.
     $links = $this->createLinkHierarchy($module);
     $this->menuLinkManager->removeDefinition($links['child-1']);
     $expected_hierarchy = array('parent' => FALSE, 'child-1-1' => 'parent', 'child-1-2' => 'parent', 'child-2' => 'parent');
     $this->assertMenuLinkParents($links, $expected_hierarchy);
     // @todo Figure out what makes sense to test in terms of automatic
     //   re-parenting. https://www.drupal.org/node/2309531
 }