web-dev-qa-db-ja.com

PHP

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

<?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行目)。

7
emc

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

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

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

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

_print render($form);
_

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

12
Clive