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, потому что мой код работает нормально после повторной установки.

Другие вопросы по тегам