เป็นเพราะพารามิเตอร์ในตัวสร้าง
ฟังก์ชั่นสาธารณะ __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) {}
การเปลี่ยนแปลงคือ: Loggerอินเทอร์เฟซ $logger
และ AccountInterface $current_user = NULL
ในตัวสร้าง
ระหว่างการอัปเกรด Drupal เป็น 9 คุณจะเห็นไฟล์ InlineBlock.php.rej (core/modules/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) {
พาเรนต์::__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) {
พาเรนต์::__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;
+ ถ้า (!$logger) {
+ @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;
}
/**