首頁>Web>source

我正在尝試获取当前所在节點的父選單項:

$node_id = // some id
$menu_link_manager = \Drupal::service('plugin.manager.menu.link');
$menu_link = $menu_link_manager->loadLinksByRoute('entity.node.canonical', array('node' => $node_id));
$parent = $menu_link->getParent();

但是由於某種原因,它总是会因以下錯誤而失败:

Error: Call to a member function getParent() on array

当我檢查 $menu_link時 我可以清楚地看到它在那裏:

也是 getParent()的方法 似乎是正確的:文件

感谢您的帮助!

最新回復
  • 7月前
    1 #

    我认為您需要首先重置收藏集,因為 ::loadLinksByRoute() 註釋指出它返迴一个 MenuLinkInterfaces[]陣列

    參见 /core/lib/Drupal/Core/Menu/MenuLinkManagerInterface.php

    
      /**
       * Loads multiple plugin instances based on route.
       *
       * @param string $route_name
       *   The route name.
       * @param array $route_parameters
       *   (optional) The route parameters. Defaults to an empty array.
       * @param string $menu_name
       *   (optional) Restricts the found links to just those in the named menu.
       *
       * @return \Drupal\Core\Menu\MenuLinkInterface[]
       *   An array of instances keyed by plugin ID.
       */
      public function loadLinksByRoute($route_name, array $route_parameters = [], $menu_name = NULL);
    

    請執行以下操作:

    /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */
    $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
    $menu_links = $menu_link_manager->loadLinksByRoute('entity.node.canonical', array('node' => $node_id));
    // Reset collection by retrieving the first item.
    $menu_link = reset($menu_links);
    // Now call the parent method.
    $parent = $menu_link->getParent();
    

  • seo:Google漫遊器試圖在同一台計算機上抓取另一个網站的URL
  • wordpress:在相應的首字母下和列內按字母順序排列的術語列表