Drupal node_save失败,但没有给出任何错误


Drupal node_save fails but gives no errors

我正在构建一个批量导入器模块,它将从一个数据库中获取数据并在drupal中创建节点。创建节点对象的代码如下:

$node = new stdClass();
$node->type = 'jobs';
$node->uid = 1;
$node->status = $row->J_Approved;
$node->title = $row->J_Title;
$node->comment = 0;
$node->revision = 1;
$node->promote = 0;
$node->sticky = 0;
$node->created = $row->J_DateTime_Mod;
$node->field_description = $row->J_Body;
$node->field_email = $row->J_MI_Email;
$node->field_jobs_fax = $row->J_MI_Phone;
$node->field_aia_firm = $row->J_AIA;
$node->field_name = $row->J_Sub_Name;
$node->field_phone = $row->J_Sub_Phone;
$node->field_jobs_email = $row->J_Sub_Email;
$node = node_submit($node);
node_save($node);

上面的输出在我的调试窗口http://screencast.com/t/R5PhWZWraIR8中当我运行它时,它没有创建节点,但是正如您从截屏中看到的,它将$node->validates设置为1,所以我假设它是有效的。我花了大约5个小时试图调试这个,但仍然不能弄清楚。

Drupal 6示例:

<?php
$node = new stdClass(); //Create instance of class stdClass which will create node for you.
$node->type = 'library'; //Name of the content type
$node->field_book_no[0][value] = 22;//Book number CCK Field
$node->field_book_name[0][value] = "Drupal"; //Book name  CCK Field
$node->field_book_author[0][value]='Sachin'; //Author name -  CCK field
$node->field_year[0][value]='2011'; //Publication year - CCK field
$node->uid = 1; // user id, 1 is created by admin
$node->status = 1;//1 is published, 0 is unpublished
$node->promote = 0;//1 is promote to home page, 0 is not to promote on home page
node_save($node); // Save this node
?>

node_load()没有返回任何东西,所以它不检查。

你可以用:

$new_node = node_load($node->nid, NULL, TRUE);

其中3d参数将在加载节点之前重置缓存。很贵,但这是我唯一知道的方法。

然后,您必须检查节点->[vars]彼此,如果它们都匹配,则返回TRUE。

我把上面的node_save代码示例归功于http://www.learn-drupal.in/cck/how-to-create-a-drupal-node-programmatically.html。