【问题标题】:Drupal node_save no longer returns $nid, so how do I get it?Drupal node_save 不再返回 $nid,那么我该如何获取呢?
【发布时间】:2010-10-30 07:36:37
【问题描述】:

我有这样的代码:

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

print_r($node);

节点创建成功,一切正常……但从 save_node() 中没有返回任何内容。较早的文档表明它返回 $nid。一些讨论和票证表明,在最近的 Drupal 版本中,节点对象被返回,但我什么也没得到(并且 $node->nid 是空的)。

那么,如何找出新创建的节点的nid呢?

【问题讨论】:

    标签: php drupal drupal-6


    【解决方案1】:

    好的,终于想通了(天哪,我觉得自己很傻)。

    node_save 现在对现有节点对象(在我的例子中已经在 $issue 中定义)进行操作,并且只需将 nid 字段(以及其他字段)添加到现有对象。没有返回任何内容,但我可以在 node_save 运行后使用 $issue->nid 访问 nid。

    【讨论】:

    • 总是很高兴看到有人跟进以帮助其他人避免一些挫败感。一年后谢谢你!
    【解决方案2】:

    谢谢!很高兴知道。感谢您回答自己的问题并分享,以便其他人(如我自己)可以学习!很好的解决方案!感谢贡献

    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;
    

    【讨论】:

      猜你喜欢
      • 2017-08-03
      • 2012-09-29
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多