Drupal 9 — Почему мое тело не сохраняется с помощью Node ::create()

#drupal #drupal-modules #drupal-9

#drupal #drupal-модули #drupal-9

Вопрос:

Спасибо, что нашли время, чтобы прочитать мою проблему.

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