Score:1

เกิดข้อผิดพลาดขณะพยายามดูการแก้ไข

ธง do

ใช้ Drupal 8/9 เมื่อพยายามดูการแก้ไขก่อนหน้านี้ ฉันได้รับข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาด: การเรียกใช้ฟังก์ชันสมาชิก getType() บนสตริงใน clc_d8_theme_theme_suggestions_page_alter() (บรรทัดที่ 13 ของ /var/www/html/wrc/web/themes/clc_d8_theme/clc_d8_theme.theme)

มันอ้างถึงรหัสนี้:

ฟังก์ชัน clc_d8_theme_theme_suggestions_page_alter (อาร์เรย์ &$คำแนะนำ, อาร์เรย์ $ตัวแปร) {
  // เพิ่มคำแนะนำประเภทเนื้อหา
  ถ้า ($node = \Drupal::request()->attributes->get('node')) {
    array_splice($suggestions, 1, 0, 'page__node__' . $node->getType()); <-- ข้อผิดพลาดที่บรรทัดนี้
  }
}

ฉันต้องการคำแนะนำประเภทสำหรับธีมของฉัน ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันคิดว่าการตรวจสอบโหนดนั้นเพียงพอที่จะหลีกเลี่ยงปัญหาได้

Score:3
ธง ve

"$โหนด" อาจแตกต่างกันเล็กน้อยตามบริบท แต่นี่คือวิธีการตั้งค่าบางส่วน $โหนด:

$routeName = \Drupal::routeMatch()->getRouteName();

$โหนด = NULL;

// $ตัวแปร['โหนด'].
ถ้า (isset($variables['node'])) {
  $node = $variables['โหนด'];
  ถ้า (is_numeric($variables['node'])) {
    $node = \Drupal::entityTypeManager()->getStorage('node')->load($variables['node']);
  }
}

// $ตัวแปร['แถว'].
if (isset($variables['row']) && !empty($variables['row']->nid)) {
  $node = \Drupal::entityTypeManager()->getStorage('node')->load($variables['row']->nid);
}

// $routeName === 'entity.node.canonical'
ถ้า ($routeName === 'entity.node.canonical') {
  $node = \Drupal::routeMatch()->getParameter('โหนด');
}

// $routeName === 'entity.node.revision'
ถ้า ($routeName === 'entity.node.revision') {
  $revisionId = \Drupal::routeMatch()->getParameter('node_revision');
  $node = node_revision_load($revisionId);
}

// $routeName === 'entity.node.preview'
ถ้า ($routeName === 'entity.node.preview') {
  $node = \Drupal::routeMatch()->getParameter('node_preview');
}

ถ้า (โหนด $) {
  // เรียกใช้รหัสของคุณ...
}

โดยเฉพาะอย่างยิ่ง ดูเหมือนว่าคุณกำลังติดตาม:

// รับชื่อเส้นทาง
$routeName = \Drupal::routeMatch()->getRouteName();

// ตรวจสอบว่าเส้นทางคือการแก้ไขโหนดหรือไม่
ถ้า ($routeName === 'entity.node.revision') {
  $revisionId = \Drupal::routeMatch()->getParameter('node_revision');
  $node = node_revision_load($revisionId);
}

สิ่งนี้จะโหลดวัตถุโหนดของคุณอย่างสมบูรณ์และ ->getType() ควรทำงานโดยไม่มีข้อผิดพลาด

โพสต์คำตอบ

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