ฉันกำลังทำงานกับ D8 และมักจะไม่ทำการกำหนดธีม ดังนั้นฉันจึงติดอยู่กับปัญหา
ฉันมีเส้นทางที่กำหนดเองในโมดูลที่กำหนดเองซึ่งเรียกเมธอด checkinConfirmation() บนตัวควบคุม
ภายในคอนโทรลเลอร์ฉันมีสิ่งนี้:
ฟังก์ชันสาธารณะ checkinConfirmation () {
$output['รายการ'] = [
'#type' => 'ชุดฟิลด์',
'#title' => t('เช็คอินรายการ'),
];
$output['items']['ชื่อ'] = [
'#prefix' => '<h2>',
'#suffix' => '</h2>',
'#markup' => t('ชื่อ'),
];
$output['#theme'] = 'circulation_confirmation';
$output['#output'] = $output;
ส่งคืน $output;
}
และภายในธีมของฉัน ฉันมีสิ่งนี้อยู่ภายใน hook_theme()
ฟังก์ชั่นสาธารณะ mytheme_theme () {
$ธีม['circulation_confirmation'] = [
'เทมเพลต' => 'หน้า/การหมุนเวียน--การยืนยัน',
'ตัวแปร' => [
'เอาต์พุต' => [],
]
];
}
ในเทมเพลตของฉัน ฉันมีไฟล์ {{ เอาต์พุต }}
ตัวแปรเพื่อพิมพ์เอาต์พุตที่เรนเดอร์จาก $output ปัญหาคือ ฉันไม่ได้รับรายการในเทมเพลต และฉันไม่สามารถเข้าใจได้ว่าทำไม เทมเพลตกำลังถูกดึงเข้ามา เนื่องจากมีการใช้ wrapper ในไฟล์เทมเพลตบนเพจ และคอนเทนเนอร์หลักคือความกว้างที่ควรจะเป็น
ในการใช้สิ่งนี้แทน (ในคอนโทรลเลอร์):
กลับ [
'#theme' => 'circulation_confirmation',
'#output' => $เอาท์พุท,
];
อย่างน้อยฉันก็ได้รับข้อมูล แต่ดูเหมือนว่าจะไม่ใช้เทมเพลตที่ฉันให้ไว้เนื่องจากตอนนี้ wrapper หายไปแล้วและคอนเทนเนอร์หลักมีความกว้างเต็มแทนที่จะเป็นความกว้างที่ควรจะเป็น
ฉันมักจะไม่ทำการกำหนดธีมหรือเทมเพลต และเมื่อฉันทำก็มักจะเป็นแบบฟอร์ม ดังนั้นฉันจึงสามารถส่ง 'render element' => 'form' เพื่อให้ส่งรายการแบบฟอร์มไปยังธีมได้ ฉันไม่แน่ใจว่าฉันทำอะไรผิด
กรุณาช่วย?