Drucken Sie das Kommentarformular mit PHP aus


7

Ich versuche, ein Kommentarformular mit dem folgenden Code zu drucken.

<?php 
    print drupal_get_form('comment_form', array('nid' => $row->nid), t('Post new comment')); 
?>

Ich erhalte nur den folgenden Fehler, der 40 Mal wiederholt wurde:

Warnung: Versuchen Sie, die Eigenschaft eines Nichtobjekts in comment_form () zuzuweisen (Zeile 1845 von /home/admin/public_html/website.com/modules/comment/comment.module). "

Das Kommentarformular wird in einem PHP-Ansichtsfeld aufgerufen . Was ist der richtige Weg, um einem Knoten in Drupal 7 einen Kommentar hinzuzufügen?

Es gibt tatsächlich viel mehr Fehler, von denen die meisten mindestens einmal wiederholt werden:

EntityMalformedException: Fehlende Bundle-Eigenschaft für Entität vom Typ Kommentar. in entity_extract_ids () (Zeile 7501 von /home/admin/public_html/website.com/includes/common.inc). Hinweis: Es wird versucht, die Eigenschaft eines Nichtobjekts in comment_form () abzurufen (Zeile 1854 von /home/admin/public_html/website.com/modules/comment/comment.module).

Antworten:


12

comment_form() erwartet, dass der Parameter eher ein Objekt als ein Array ist, also sollten Sie Folgendes tun:

$comment = new stdClass;
$comment->nid = $row->nid;
$form = drupal_get_form('comment_form', $comment);

Beachten Sie, dass das Fehlen eines dritten Parameters, der an übergeben wird drupal_get_form(), comment_form()den Kommentar nur als Parameter akzeptiert. Wenn Sie einen Titel hinzufügen möchten, müssen Sie diesen separat drucken.

Schließlich drupal_get_form()gibt ein Array machen , anstatt einen String , so dass Sie es durch die passieren müssen render()Funktion:

print render($form);

Die zusätzlichen Fehler, die Sie erhalten, sind nur Nebenwirkungen der Übergabe eines Arrays und nicht eines Objekts an die comment_form()Funktion.


Danke Mann ... einige dieser Dokumentationen sind ziemlich kryptisch
emc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.