Đó là do các tham số trong hàm tạo
hàm công khai __construct(){}
thay thế
hàm công khai __construct(mảng $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user){}
với
hàm công khai __construct(mảng $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, LoggerInterface $logger, AccountInterface $current_user = NULL) {}
Những thay đổi là: LoggerInterface $logger
và AccountInterface $current_user = NULL
trong hàm tạo.
Trong quá trình nâng cấp Drupal lên 9, bạn sẽ thấy một tệp InlineBlock.php.rej (lõi/mô-đun/layout_builder/src/Plugin/Block/InlineBlock.php.rej) cung cấp thông tin chi tiết để khắc phục sự cố.
JFI: Tôi đã thực hiện thay đổi trực tiếp với InlineBlock.php, vui lòng đề xuất nếu có một cách khác để vá nó.
InlineBlock.php.rej tập tin chứa:
***************
***81,90****
* Dịch vụ quản lý kiểu thực thể.
* @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
* Kho lưu trữ hiển thị thực thể.
* @param \Drupal\Core\Session\AccountInterface $current_user
* Người dùng hiện tại.
*/
- hàm công khai __construct(mảng $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, AccountInterface $current_user = NULL) {
cha mẹ::__construct($configuration, $plugin_id, $plugin_definition);
$this->entityTypeManager = $entity_type_manager;
--- 89.100 ----
* Dịch vụ quản lý kiểu thực thể.
* @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
* Kho lưu trữ hiển thị thực thể.
+ * @param \Psr\Log\LoggerInterface $logger
+ * Phiên bản nhật ký.
* @param \Drupal\Core\Session\AccountInterface $current_user
* Người dùng hiện tại.
*/
+ hàm công khai __construct(mảng $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EntityDisplayRepositoryInterface $entity_display_repository, LoggerInterface $logger, AccountInterface $current_user = NULL) {
cha mẹ::__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;
+ nếu (!$logger) {
+ @trigger_error('Dịch vụ ghi nhật ký phải được chuyển tới InlineBlock::__construct(). Dịch vụ này đã được thêm vào trong drupal:9.2.0 và sẽ được yêu cầu trước drupal:10.0.0.', E_USER_DEPRECATED);
+ $logger = \Drupal::service('logger.channel.layout_builder');
+ }
+ $this->logger = $logger;
}
/**