ผมขอขยายความ แบบฟอร์มเอนทิตี class และฉันพยายามแทนที่ปุ่มส่งเพื่อตั้งค่าแอตทริบิวต์ HTML ID (ลอง #1) เนื่องจากมันใช้งานไม่ได้ ฉันจึงพยายามห่อปุ่มไว้ในกระดาษห่อ <div>. ฉันพยายามห่อด้วยสองวิธีที่แตกต่างกัน (ลอง #2 และลอง #3) แต่ไม่ได้ผล
วิธีเดียวที่ฉันสามารถแทนที่ปุ่มส่งได้คือการตั้งค่า '#คุณลักษณะ' เพื่อตั้งค่าแอตทริบิวต์ HTML ระดับ และเพิ่มคลาส CSS ของตัวเอง แต่ความปรารถนาของฉันคือตั้งค่า HTML รหัส คุณลักษณะ. และฉันต้องการทำสิ่งนี้แทนที่ใน actions() วิธีการ (ไม่ใช่ form())
ใช้ Drupal\Core\Entity\ContentEntityForm
คลาส MyForm ขยาย ContentEntityForm {
  การกระทำของฟังก์ชันที่ได้รับการป้องกัน (อาร์เรย์ $form, FormStateInterface $form_state) {
    $actions = parent::actions($form, $form_state);
    $actions['ส่ง'] = [
      '#type' => 'ส่ง',
      '#id' => 'ปุ่มบันทึก', // <-- ลอง #1
      '#value' => t('บันทึก'),
      '#อาแจ็กซ์' => [
        'callback' => '::ajaxCallback',
        'event' => 'mousedown',
        'wrapper' => 'bar-wrapper-1', // <-- ลอง #2
      ]
      '#prefix' => '<div id="bar-wrapper-2">', // <-- ลอง #3
      '#suffix' => '</div>',
      '#attributes' => [
        'คลาส' => ['foo'], // <-- ลอง #4
      ]
    ];
    $actions['submit_wrapper'] = [
      '#type' => 'มาร์กอัป',
      '#markup' => '<div id="bar-wrapper-1"></div>'
    ];
    ส่งคืน $actions;
  }
}
ฉันคิดว่าฉันสามารถแทนที่รหัส HTML ภายในเท่านั้น รูปร่าง()แต่ดูไม่สอดคล้องกันเล็กน้อยเพราะฉันสามารถแทนที่/เพิ่มคลาส CSS ได้