web-dev-qa-db-fra.com

Obtenir l'élément de lien de menu à partir de MenuLinkTreeElement

Hé, je charge un menu drupal 8 de la manière suivante:

if ($menu != NULL) {
    $tree = \Drupal::menuTree()
    ->load("my_menu", new MenuTreeParameters());

Cela renvoie les objets MenuLinkTreeElement. Il ne semble pas possible de récupérer les champs attachés à l'élément de menu.

Comment puis je faire ça? Dois-je charger le menu via une autre fonction?

3
Potney Switters

Vous pouvez obtenir l'entité de contenu de lien de menu en accédant à l'uuid avec la méthode getDerivativeId() du plugin:

if ($link instanceof \Drupal\menu_link_content\Plugin\Menu\MenuLinkContent) {
  $uuid = $link->getDerivativeId();
  $entity = \Drupal::service('entity.repository')
    ->loadEntityByUuid('menu_link_content', $uuid);
  $field_value = $entity->field_example->value;
}
6
4k4