PHPでコメントフォームを印刷する


7

次のコードでコメントフォームを印刷しようとしています。

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

私が得るすべては40回繰り返される次のエラーです:

警告:非オブジェクトのプロパティをcomment_form()で割り当てようとしています(/home/admin/public_html/website.com/modules/comment/comment.moduleの1845行目)。`

コメントフォームは、PHPビューフィールド内から呼び出されます。Drupal 7のノードにコメントを追加する適切な方法は何ですか?

実際にはさらに多くのエラーがあり、そのほとんどは少なくとも1回繰り返されます。

EntityMalformedException:コメントタイプのエンティティにバンドルプロパティがありません。entity_extract_ids()内(/home/admin/public_html/website.com/includes/common.incの行7501)。注意:非オブジェクトのプロパティをcomment_form()で取得しようとしています(/home/admin/public_html/website.com/modules/comment/comment.moduleの1854行目)。

回答:


12

comment_form() パラメータが配列ではなくオブジェクトであることを期待しているので、次のようなことをする必要があります:

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

渡された3番目のパラメータの不足に注意しdrupal_get_form()comment_form()あなたは別にそれを印刷する必要がありますタイトルを追加したい場合にのみ、パラメータとしてコメントを受け付けます。

最後にdrupal_get_form()、文字列ではなくレンダー配列を返すので、render()関数に渡す必要があります。

print render($form);

発生する追加のエラーは、オブジェクトではなく配列をcomment_form()関数に渡すことによる副作用です。


ありがとうございます...このドキュメントの一部はかなり不可解です
emc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.