如何解决Drupal 9-为什么不使用Node :: create
感谢您抽出宝贵的时间来阅读我的问题。
我正在尝试编写一个模块,将内容从旧版本的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,...
$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();
结果每次都是相同的,主体没有保存在DB中。 save()方法返回“ 1”,新创建的节点出现在/ admin / content中,但无法显示。如果我尝试显示节点,则会返回以下错误:
错误:在template_preprocess_node()(核心/模块/节点/node.module的第528行)中,调用成员函数displaySubmitted()上的null。
有人有同样的问题吗?
在此先感谢您的输入!
解决方法
我解决了我的问题。
我想我在安装Drupal时做错了,因为在再次安装所有东西之后我的代码可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。