Score:1

การสร้างเทมเพลตและตัวแปรแบบกำหนดเองในโมดูล

ธง cn

ฉันกำลังทำงานกับ 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' เพื่อให้ส่งรายการแบบฟอร์มไปยังธีมได้ ฉันไม่แน่ใจว่าฉันทำอะไรผิด

กรุณาช่วย?

Rainer Feike avatar
in flag
คุณไม่ควรทำเช่นนี้: $output['#output'] = $output; แต่ลองเพิ่ม '#type' => 'markup' ใน #markup - items ของคุณ
Ex0r avatar
cn flag
นั่นทำให้ไม่มีการเปลี่ยนแปลง นอกจากนี้ยังไม่มีการดึง fieldset เข้ามาด้วย
beltouche avatar
cn flag
คุณมีขีดล่างเดียวในการส่งคืน['#theme'] แต่มียัติภังค์คู่ในชื่อเทมเพลต
Score:0
ธง in

คุณสามารถลองทำสิ่งนี้:

ใน custom_module.module ของคุณ:

ฟังก์ชัน custom_module_theme() {
    กลับ [
        'circulation_confirmation' => [
            'render element' => 'เอาท์พุท',
            'ตัวแปร' => [
                'เอาต์พุต' => [],
            ]
        ]
    ];

และในคอนโทรลเลอร์ของคุณ:

ฟังก์ชันสาธารณะ checkinConfirmation () {
    $rtn = [
        '#theme' => 'circulation_confirmation',
        '#เอาต์พุต' => [],
    ];

    $rtn['#output']['items'] = [
        '#type' => 'ชุดฟิลด์',
        '#title' => t('เช็คอินรายการ'),
    ];

    $rtn['#output']['items']['ชื่อ'] = [
        '#prefix' => '<h2>',
        '#suffix' => '</h2>',
        '#markup' => t('ชื่อ'),
    ];

    คืน $rtn;
}

โพสต์คำตอบ

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