it-swarm.com.de

Wie erhalte ich die Knoten-ID, an die der Kommentar in hook_comment_insert angehängt ist?

Wie kann ich den Knoten id erhalten, an den der Kommentar in hook_comment_insert Angehängt ist?

Ich habe den folgenden Code ausprobiert:

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');

  }
}
6
D34dman

der richtige Weg, um nid zu laden, ist:

$entity->get('entity_id')->target_id

und nicht

$entity->get('entity_id')->value

Im Zweifelsfall, welcher Schlüssel verwendet werden soll,

versuchen,

$entity->get('entity_id')->getValue()

und überprüfen Sie den zurückgegebenen Wert.

5
D34dman

Dies ist eine späte Antwort, die auf einer anderen Frage basiert, die als Duplikat dieser Frage gekennzeichnet ist.

Die Kommentarentität verfügt über einige hilfreiche Methoden, um die ihr zugeordnete Entität wiederherzustellen.

CommentInterface :: getCommentedEntity sollte das Entitätsobjekt abrufen, an das der Kommentar angehängt ist.

Damit

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.
   }
}
2
mradcliffe