Рейтинг:0

Аргумент 6, переданный в Drupal\layout_builder\Plugin\Block\InlineBlock::__construct(), должен реализовывать интерфейс

флаг cn

Я обновлял Drupal 8 до 9. Я установил модуль «Статус обновления» и исправил, как он предложил. Теперь пришло время перейти на D9. Я изменил на composer.json.

"drupal/core-composer-scaffold": "^8.9.0",
"drupal/core-рекомендуется": "^8.9.0",

К

"drupal/core-composer-scaffold": "^9.1.0",
"drupal/core-рекомендуется": "^9.1.0",

Затем выполнил следующую команду:

обновление композитора
драш кр
драш updb -y

После запуска обновления я получил Drupal 9.2.6. При просмотре URL-адреса он показал следующую ошибку:

TypeError: аргумент 6 передан Drupal\layout_builder\Plugin\Block\InlineBlock::__construct() должен реализовать интерфейс Drupal\Core\Session\AccountInterface, экземпляр Drupal\Core\Logger\LoggerChannel задан, вызван /app/web/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php на линии 117 в Drupal\layout_builder\Plugin\Block\InlineBlock->__construct() (строка 95 ядра/модулей/layout_builder/src/Plugin/Block/InlineBlock.php).

Я гуглил, но не смог найти решение. Любое предложение действительно ценится.

Рейтинг:-2
флаг cn

Это связано с параметрами в конструкторе

общедоступная функция __construct(){}

заменять

общедоступная функция __construct(массив $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user){}

с

общедоступная функция __construct (массив $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, LoggerInterface $logger, AccountInterface $current_user = NULL) {}

Изменения: LoggerInterface $ logger и AccountInterface $current_user = NULL в конструкторе.

Во время обновления Drupal до 9 вы увидите файл InlineBlock.php.rej (ядро/модули/layout_builder/src/Plugin/Block/InlineBlock.php.rej), который содержит подробные сведения об устранении проблемы.

JFI: я внес изменения непосредственно в InlineBlock.php, пожалуйста, предложите, если есть альтернативный способ исправить это.

InlineBlock.php.rej файл содержит:

***************
*** 81,90 ****
     * Служба диспетчера типов сущностей.
     * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
     * Репозиторий отображения сущностей.
     * @param \Drupal\Core\Session\AccountInterface $current_user
     * Текущий пользователь.
     */
- публичная функция __construct(массив $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user = NULL) {
      parent::__construct($configuration, $plugin_id, $plugin_definition);
  
      $this->entityTypeManager = $entity_type_manager;
--- 89 100 ----
     * Служба диспетчера типов сущностей.
     * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
     * Репозиторий отображения сущностей.
+ * @param \Psr\Log\LoggerInterface $logger
+ * Экземпляр регистратора.
     * @param \Drupal\Core\Session\AccountInterface $current_user
     * Текущий пользователь.
     */
+ общедоступная функция __construct(массив $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, LoggerInterface $logger, AccountInterface $current_user = NULL) {
      parent::__construct($configuration, $plugin_id, $plugin_definition);
  
      $this->entityTypeManager = $entity_type_manager;
***************
*** 98 103 ****
        $current_user = \Drupal::currentUser();
      }
      $this->currentUser = $current_user;
    }
  
    /**
--- 108 118 ----
        $current_user = \Drupal::currentUser();
      }
      $this->currentUser = $current_user;
+ если (!$регистратор) {
+ @trigger_error('Служба регистратора должна быть передана в InlineBlock::__construct(). Она была добавлена ​​в drupal:9.2.0 и потребуется до drupal:10.0.0.', E_USER_DEPRECATED);
+ $logger = \Drupal::service('logger.channel.layout_builder');
+ }
+ $this->logger = $logger;
    }
  
    /**

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.