【问题标题】:Node getting created but not inserting into db in Drupal 7在 Drupal 7 中创建节点但未插入数据库
【发布时间】:2016-07-23 13:12:24
【问题描述】:

我有Drupal 7 网站。我在我的模块中创建节点如下:-

    $newNode = new stdClass();
    $newNode->title = "Hello Node";
    $newNode->type = "product";
    node_object_prepare($newNode); // Sets some defaults.
    $newNode->field_prod_type = 1;
    $newNode->field_prod_cost = 125.00;

    node_submit($newNode); // Prepare node for saving
    node_save($newNode);

如果我回显上面的 newNode,我会得到成功创建的新节点 ID

echo "<pre>; print_r($newNode); exit();

问题:-
但是当我检查数据库时,我没有看到任何具有上述节点详细信息的新记录。

非常感谢任何帮助。

【问题讨论】:

  • Ao 当您访问 yoursite/node/[nidofnewnode] 时会看到什么?节点创建看起来不错,但为字段设置值看起来不对,尝试不使用它们:$newNode-&gt;field_prod_type = 1;$newNode-&gt;field_prod_cost = 125.00;
  • @justtry。是的,你是对的。节点可访问'yoursite/node/[nidofnewnode]',但在数据库中我看不到值

标签: php drupal drupal-7 drupal-nodes


【解决方案1】:

您必须使用node_object_prepare 函数来准备节点值,就像您所做的那样。

但是该节点不会被发布(状态 = 1)并且没有附加用户(uid = 0?)。 最后,字段的格式始终是数组,具有二维(语言和增量)。 那么你的代码一定是

$newNode->field_prod_type['und'][0] = 1;
$newNode->field_prod_cost['und'][0] = 125.00;

然后,如果您查看“节点”表,您必须拥有返回的 nid 的记录。但是如果你没有在数组中正确格式化,你就不能在字段表('field_data_field_prod_type'和'field_data_field_prod_cost')中拥有记录......

保存节点时是否有任何错误消息?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2012-05-14
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多