2009-06-01 5 views
8

私はこのようなコードを持っています:

... setup $issue object ... 
$node = node_save($issue); 

print_r($node); 

ノードは正常に作成され、すべて正常に動作しますが、save_node()から返されたものは何もありません。古いドキュメントは$ nidを返すことを示しています。いくつかのディスカッションとチケットは、最近のDrupalバージョンではノードオブジェクトが返されるが、何も返されない($ node-> nidは空である)ことを示している。

だから、新しく作成されたノードのnidを調べるにはどうすればいいですか?

答えて

22

OK、最後にこれを考え出しました(そして、少年は私は馬鹿になります)。

node_saveは既存のノードオブジェクト(私の場合は$ issueで既に定義されています)で動作し、既存のオブジェクトにnidフィールドを追加するだけです。何も返されませんが、node_saveの実行後、$ issue-> nidでnidにアクセスできます。

+0

誰かが何か欲求不満を救うのを助けるためにフォローアップしている人を見るのは常に素晴らしいです。一年後にありがとうございます! – wynz

0

ありがとうございました!非常に知って良い。あなた自身の質問に答えて、他の人が(私のように)学ぶことができるように共有してくれてありがとう!良い解決策!

2ヒント貢献してくれてありがとう:ノードが正常に保存されたユーザーに通知するために
//使用drupal_set_messageを()
は//エラーをキャッチするために保存する前にnode_submit()を使用してみてくださいそれが存在する可能性があります

if ($_newnode = node_submit($_newnode)) { 
    node_save($_newnode); 
    drupal_set_message(t("Node ".$_newnode->title." added correctly")); 
    $return = $_newnode->uid; 
} else { 
    $return = 0; 
    drupal_set_message(t("Node ".$_newnode->title." added incorrectly"), "error"); 
} 

return $return; 
関連する問題