获取当前节点的父菜单项
Get parent menu item of a current node
我正在尝试获取我当前所在节点的父菜单项:
$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
非常感谢任何帮助!
loadLinksByRoute returns \Drupal\Core\Menu\MenuLinkInterface
的数组。所以当你打电话时:
$menu_link_manager->loadLinksByRoute()
你得到的是一个数组而不是一个对象(Drupal 经常 returns 在你可能期望对象的地方返回数组)。您的路线可以在多个菜单 link 上,因此您可能需要考虑从该数组中提取什么,但最简单的解决方案是使用 reset() or array_pop().[= 提取数组中的第一个元素14=]
我正在尝试获取我当前所在节点的父菜单项:
$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
非常感谢任何帮助!
loadLinksByRoute returns \Drupal\Core\Menu\MenuLinkInterface
的数组。所以当你打电话时:
$menu_link_manager->loadLinksByRoute()
你得到的是一个数组而不是一个对象(Drupal 经常 returns 在你可能期望对象的地方返回数组)。您的路线可以在多个菜单 link 上,因此您可能需要考虑从该数组中提取什么,但最简单的解决方案是使用 reset() or array_pop().[= 提取数组中的第一个元素14=]