166
Не добавляется материал при обновлении с Drupal 8 на Drupal 9
После обновления до Drupal 9 при попытке создать материал стала появляться ошибка:
Error: Call to a member function getAccountName() on null в Drupal\node\NodeForm->form() (строка 155
Насколько я понял, связано это с устаревшим классом, на смену которого пришёл ::getDefaultEntityOwner. Удалось эту ошибку убрать путём изменения ядра самого Drupal. Также рекомендуют менять конфигурацию (Этот комментарий). Можно изменит ядро, но это кривой способ. Лучше всего изменить конфигурации core.base_field_override.node.NODETYPE.uid.yml , в которых есть устаревший класс вывода автора ноды.
Патч для устранения ошибки и возможности заново заводить ноды:
diff --git a/core/modules/node/src/NodeForm.php b/core/modules/node/src/NodeForm.php
index a90a5a723f..173a047f21 100644
--- a/core/modules/node/src/NodeForm.php
+++ b/core/modules/node/src/NodeForm.php
@@ -152,7 +152,7 @@ public function form(array $form, FormStateInterface $form_state) {
$form['meta']['author'] = [
'#type' => 'item',
'#title' => $this->t('Author'),
- '#markup' => $node->getOwner()->getAccountName(),
+ '#markup' => !$node->isNew() ? $node->getOwner()->getAccountName() : \Drupal::currentUser()->getAccountName(),
'#wrapper_attributes' => ['class' => ['entity-meta__author']],
];