แบบฟอร์มดังต่อไปนี้คาดว่าจะแสดงฟิลด์เพิ่มเติมเมื่อผู้ใช้เลือก "ใช่" ในปุ่มตัวเลือก "แสดงเพิ่มเติม" เมื่อแสดง ส่วนเพิ่มเติมจะมีช่องข้อความ "ชื่อ" และชุดตัวเลือก "เพศ"
แต่มันไม่เคยทำงานตามที่คาดไว้ ป้ายกำกับ "เพศ" จะอยู่ที่นั่น แต่ปุ่มตัวเลือกจะไม่แสดงผล ฉันรู้ว่าการเปลี่ยน "เพศ" เป็นวิทยุจะได้ผล แต่ด้วยเหตุผลบางอย่าง ฉันจำเป็นต้องใช้ปุ่มตัวเลือกหลายปุ่ม มีวิธีใดบ้างที่ฉันจะทำให้งานนี้สำเร็จ
<?php
เนมสเปซ Drupal\mymodule\Form;
ใช้ Drupal\Core\Form\FormBase;
คลาส DonationPrepareForm ขยาย FormBase {
  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ getFormId () {
    กลับ 'my_form';
  }
  /**
   * {@inheritdoc}
   */
  buildForm ฟังก์ชั่นสาธารณะ (
    อาร์เรย์ $form,
    FormStateInterface $form_state
  ) {
    $แบบฟอร์ม['show_more'] = [
      '#type' => 'วิทยุ',
      '#title' => 'แสดงเพิ่มเติม',
      '#ตัวเลือก' => [
        'ใช่' => 'ใช่',
        'น' => 'ไม่',
      ]
      '#อาแจ็กซ์' => [
        'callback' => '::ajaxBuildForm',
        'wrapper' => 'แก้ไขเพิ่มเติม-wrapper',
        'ความคืบหน้า' => [
          'type' => 'throbber',
          'ข้อความ' => $this->t('กำลังโหลด...'),
        ]
      ]
    ];
    $แบบฟอร์ม['เพิ่มเติม'] = [
      '#type' => 'คอนเทนเนอร์',
      '#prefix' => '<div id="edit-more-wrapper">',
      '#suffix' => '</div>',
    ];
    คืนฟอร์ม $;
  }
  ฟังก์ชันสาธารณะ ajaxBuildForm (อาร์เรย์ &$form, FormStateInterface $form_state)
  {
    ถ้า ($form_state->getValue('show_more') === 'Y') {
      $form['เพิ่มเติม']['ชื่อ'] = [
        '#type' => 'ช่องข้อความ',
        '#title' => 'ชื่อ',
        '#required' => จริง,
      ];
      $form['more']['gender'] = [
        '#type' => 'วิทยุ',
        '#title' => 'เพศ',
        '#ตัวเลือก' => [
          'M' => 'ชาย',
          'F' => 'หญิง',
        ]
        '#required' => จริง,
      ];
    }
    ส่งคืน $form['more'];
  }
}
คำถามเดียวกันขยายไปถึงองค์ประกอบฟอร์มผสมอื่นๆ (เช่นช่องทำเครื่องหมาย) มีวิธีใดบ้างที่จะทำให้ AJAX ใช้งานได้?