2009-06-01 5 views
8

que tienen código como este:

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

print_r($node); 

El nodo se crea correctamente, y todo funciona bien ... pero nada se volvió de save_node(). Los documentos antiguos indican que devuelve $ nid. Varias discusiones y tickets indican que en versiones recientes de Drupal se devuelve el objeto nodo, pero no recibo nada (y $ node-> nid está vacío).

Entonces, ¿cómo averiguo el nid del nodo recién creado?

Respuesta

22

OK, finalmente me di cuenta de esto (y chico, me siento tonto).

node_save ahora funciona en el objeto nodo existente (ya definido en $ issue en mi caso), y simplemente agrega el campo nid (entre otros) al objeto existente. No se devuelve nada, pero puedo acceder al nid con $ issue-> nid después de ejecutar node_save.

+0

Siempre es bueno ver a alguien siguiéndolo para ayudar a otros a ahorrar algo de frustración. ¡Gracias un año después! – wynz

0

¡Gracias! Muy bueno saber ¡Gracias por responder tu propia pregunta y compartir para que otros (como yo) puedan aprender! ¡Buena solución! Gracias por contribuir

2 puntas: //
uso drupal_set_message() para informar al usuario de que el nodo se ha guardado correctamente
// tratar de usar node_submit() antes de guardar para atrapar errores que pudieran existir

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; 
Cuestiones relacionadas