1

感谢您花时间阅读我的问题。

我正在尝试编写一个模块,将内容从旧版本的 Drupal 导入到新的 Drupal 9 网站。

我设法从旧数据库中提取所有内容。它存储在一个数组中,我将它传递给一个负责在新数据库中创建节点的函数。我遇到的问题是节点的主体没有保存。在表节点、node_field_data、node_revision、node_field_revision 中创建记录,但在 node__body 中没有创建任何内容。

我尝试了两种不同的方法:

1-

$node = Node::create(['type' => 'article_epingle']);
$node->langcode = $a["lang"];
$node->title = $a["title"];
// ... status, promote, ...
$node->body = array("value" => $a["body"], "format" => 'full_html');
// ... a few custom fields
$node->enforceIsNew();
$node->save();

或者

$node = Node::create(['type' => 'article_epingle']);
$node->langcode = $a["lang"];
$node->title = $a["title"];
// ... status, promote, ...
$node->body->value = $a["body"];
$node->body->format = 'full_html';
// ... a few custom fields
$node->enforceIsNew();
$node->save();

和 2 -

$node = \Drupal::entityTypeManager()
                 ->getStorage('node')
                 ->create(['type' => 'article_epingle',
                           'title' => $a["title"],
                           'body' => $a["body"],
                           // ... other fields
                           ]);
$node->save();

结果每次都是一样的,身体没有保存在数据库中。save() 方法返回“1”,新创建的节点出现在 /admin/content 中但无法显示。如果我尝试显示节点,则会返回以下错误:

错误:在 template_preprocess_node()(core/modules/node/node.module 的第 528 行)中对 null 上的成员函数 displaySubmitted() 调用。

有没有人已经有同样的问题?

提前感谢您的意见!

4

1 回答 1

0

我解决了我的问题。

我想我在安装 Drupal 时做错了,因为我的代码在再次安装所有内容后工作正常。

于 2020-11-09T12:03:54.303 回答