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