Comment puis-je obtenir le nœud id
auquel le commentaire est attaché dans hook_comment_insert
?
J'ai essayé le code suivant:
function mymodule_comment_insert(Drupal\Core\Entity\EntityInterface $entity) {
if ($entity->bundle() == 'comment_custom' && $entity->get('entity_type')->value == 'node') {
// Below returns empty, because "$entity->get('entity_id')->value" is empty.
$node = Node::load($entity->get('entity_id')->value);
// No luck with this one too.
$node = \Drupal::routeMatch()->getParameter('node');
}
}
la bonne façon de charger nid est,
$entity->get('entity_id')->target_id
et pas
$entity->get('entity_id')->value
En cas de doute sur la clé à utiliser,
essayer,
$entity->get('entity_id')->getValue()
et inspectez la valeur retournée.
Il s'agit d'une réponse tardive basée sur une autre question signalée comme doublon de celle-ci.
L'entité Comment dispose de quelques méthodes utiles pour récupérer l'entité à laquelle elle est associée.
CommentInterface :: getCommentedEntity devrait obtenir l'objet entité auquel le commentaire est attaché.
Donc
if ($entity instanceof \Drupal\comment\CommentInterface) {
$commentedEntity = $entity->getCommentedEntity();
if ($commentedEntity && $commentedEntity instanceof \Drupal\node\NodeInterface) {
// The entity that the comment is attached to is a node.
// Do something with the commented entity.
}
}