Drupal 9 - Почему мое тело не сохраняется с помощью Node::create()
Спасибо, что нашли время прочитать мою проблему.
Я пытаюсь написать модуль, который импортирует контент из старой версии Drupal на новый сайт Drupal 9.
Мне удалось извлечь весь контент из старой базы данных. Он хранится в массиве, который я передаю функции, отвечающей за создание узла в новой БД. У меня проблема в том, что тело узла не сохраняется. Записи создаются в таблицах node, 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, но не может быть отображен. Если я попытаюсь отобразить узел, возвращается следующая ошибка:
Ошибка: вызов функции-члена displaySubmitted() с нулевым значением в template_preprocess_node() (строка 528 файла core/modules/node/node.module).
У кого-нибудь уже была такая же проблема?
Спасибо заранее за ваш вклад!
1 ответ
Я решил свою проблему.
Думаю, я сделал что-то не так при установке Drupal, потому что мой код работает нормально после повторной установки.