2009-06-01 5 views
8

Ich habe Code wie folgt aus:

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

print_r($node); 

Der Knoten erfolgreich erstellt wurde, und alles funktioniert ... aber nichts zurückgegeben es aus save_node(). Ältere Dokumente weisen darauf hin, dass $ nid zurückgegeben wird. Mehrere Diskussionen und Tickets zeigen an, dass in den letzten Drupal-Versionen das Knotenobjekt zurückgegeben wird, aber ich nichts zurückbekomme (und $ node-> nid ist leer).

Also, wie finde ich die NID des neu erstellten Knotens?

Antwort

22

OK, schließlich dachte ich mir das aus (und Junge, ich fühle mich albern).

node_save operiert jetzt auf dem vorhandenen Knotenobjekt (in meinem Fall bereits in $ issue definiert) und fügt einfach das nid-Feld (unter anderem) zum bestehenden Objekt hinzu. Nichts wird zurückgegeben, aber ich kann auf die NID mit $ issue-> nid zugreifen, nachdem node_save ausgeführt wurde.

+0

Es ist immer schön, jemanden zu sehen, der nachhilft, anderen zu helfen, Frust zu ersparen. Danke ein Jahr später! – wynz

0

Vielen Dank! Sehr gut zu wissen. Danke, dass du deine eigene Frage beantwortest und teilst, damit andere (wie ich) lernen können! Gute Lösung! Vielen Dank für

2 Tipps Beitrag:
// Verwendung drupal_set_message(), um den Benutzer zu informieren, dass der Knoten erfolgreich
// versuchen node_submit() unter Verwendung gespeichert wurde, bevor Fehler abzufangen speichern, die existieren könnten

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;