Score: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-recommended": "^8.9.0",

ถึง

"drupal/core-composer-scaffold": "^9.1.0",
"drupal/core-recommended": "^9.1.0",

จากนั้นรันคำสั่งต่อไปนี้:

อัพเดทผู้แต่ง
ดรัช cr
drush 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 ของ core/modules/layout_builder/src/Plugin/Block/InlineBlock.php)

ฉัน googled แต่ไม่พบวิธีแก้ปัญหา ข้อเสนอแนะใด ๆ ที่ชื่นชมจริงๆ

Score:-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) {}

การเปลี่ยนแปลงคือ: 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;
    }
  
    /**

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา