Drupal node_save больше не возвращает $ nid, так как мне его получить? - PullRequest
8 голосов
/ 01 июня 2009

У меня есть такой код:

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

print_r($node);

Узел успешно создан, и все работает нормально ... но ничего не возвращается из save_node (). Старые документы указывают, что он возвращает $ nid. Несколько обсуждений и тикетов показывают, что в последних версиях Drupal объект узла возвращается, но я ничего не получаю (а $ node-> nid пусто).

Итак, как мне узнать nid вновь созданного узла?

Ответы [ 2 ]

24 голосов
/ 01 июня 2009

ОК, наконец-то понял это (и я чувствую себя глупо).

node_save теперь работает с существующим объектом-узлом (в моем случае уже определенным в $ issue) и просто добавляет поле nid (среди прочих) к существующему объекту. Ничего не возвращается, но я могу получить доступ к nid с помощью $ issue-> nid после запуска node_save.

0 голосов
/ 23 декабря 2010

Спасибо! Очень приятно знать. Спасибо, что ответили на свой вопрос и поделились, чтобы другие (как я) могли учиться! Хорошее решение! Спасибо за помощь

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;
...