ผมขอขยายความ แบบฟอร์มเอนทิตี
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 ได้