【问题标题】:Get parent menu item of a current node获取当前节点的父菜单项
【发布时间】:2021-02-28 19:06:08
【问题描述】:

我正在尝试获取我当前所在节点的父菜单项:

$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()的方法似乎是正确的:Docs

不胜感激!

【问题讨论】:

    标签: drupal drupal-8


    【解决方案1】:

    loadLinksByRoute 返回\Drupal\Core\Menu\MenuLinkInterface 的数组。所以当你打电话时:

    $menu_link_manager->loadLinksByRoute()
    

    你得到了一个数组而不是一个对象(Drupal 经常在你可能期望一个对象的地方返回数组)。您的路线可以位于多个菜单链接上,因此您可能需要考虑从该数组中拉取什么,但最简单的解决方案是使用 reset()array_pop() 拉取数组中的第一个元素。

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多