Quel est le remplacement de menu_link_load ()?
Drupal 7 a menu_link_load () pour charger un seul élément de menu. Qu'est-ce que l'équivalent Drupal 8?
Réponses
Les liens de menu de Drupal 8 sont désormais des entités de contenu. L'équivalent du chargement d'un objet lien de menu D7 serait de charger une MenuLinkContententité . Cela peut être fait via la Drupal\menu_link_content\Entity\MenuLinkContent::load()méthode statique .
Il devrait être considéré comme une bonne pratique de s'appuyer sur le gestionnaire de type d'entité pour charger les entités. Premièrement, le modèle est facile à retenir et a le même aspect pour tout type d'entité. Remplacez simplement menu_link_contentpar nodeou node_typeou autre. Deuxièmement, il prend en charge le conteneur d'injection de dépendances à utiliser dans le code POO.
\Drupal::entityTypeManager()->getStorage('menu_link_content')->load($id);
Lisez Travailler avec l'API Entity pour plus d'informations.
Évitez d'utiliser la
Entity::load()méthode statique dans le code orienté objet. Utilisez plutôt l'injection de dépendances pour injecter le gestionnaire de type d'entité et charger l'entité avec . Cela garantit que le code est correctement découplé et peut être testé unitaire.$this->entityTypeManager->getStorage($entity_type)->load($entity_id)
Ce problème est également une bonne lecture: Node :: load ($nid) vs. \Drupal::entityTypeManager()->getStorage('node')->load($nid)
Souvent, j'entends que cela
\Drupal::entityTypeManager()->getStorage('node')->load($nid)devrait être utilisé à la placeNode::load($nid). Est fait valoir que l'utilisation de ce dernier n'est pas recommandée. J'ai cherché dans la page de documentation, le problème ou l'enregistrement de modification, mais aucun d'entre eux n'a pu me donner une idée de pourquoi l'un est le moyen préféré, que l'autre.