ปัญหา
ฉันมีโหนดบทความที่เปิดใช้งานตัวสร้างเค้าโครงสำหรับผู้เขียนเนื้อหา
ฉันมีเว็บฟอร์ม สมัครรับจดหมายข่าว เมื่อเปิดใช้งานอาแจ็กซ์
ฉันเพิ่มเว็บฟอร์มการสมัครรับจดหมายข่าวไปยังโหนดสองครั้ง ดังนั้นจึงมีการเพิ่มเว็บฟอร์มเดียวกัน 2 รายการในโหนด
เมื่อฉันส่งแบบฟอร์มที่สอง ข้อความยืนยันจะปรากฏในเว็บฟอร์มแรก
ที่คาดหวัง
ข้อความยืนยันควรปรากฏในเว็บฟอร์มที่สอง
สิ่งที่ฉันพยายาม
ฉันพยายามเปลี่ยน id โดยใช้
ฟังก์ชัน MY_MODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) {
ถ้า (isset($form['#webform_id'])) {
$counter = _MY_MODULE_generate_webform_unique_id($form['#webform_id']);
ถ้า ($เคาน์เตอร์ !== 0) {
$new_id = $form_id '_' . $เคาน์เตอร์;
$form['#form_id'] = $new_id;
$form['#attributes']['id'] = $new_id;
$form['#form_wrapper_id'] = $form['#form_wrapper_id'] '--' . $เคาน์เตอร์;
$content_wrapper = $form['#form_wrapper_id'] '-เนื้อหา--' . $เคาน์เตอร์;
$wrapper_id = $form['#form_wrapper_id'] '--' . $เคาน์เตอร์;
$prefix = '<span id="'. $content_wrapper .'"></span>'
'<div id="' . $wrapper_id . '" class="webform-ajax-form-wrapper" data-effect="fade" data-progress-type="throbber">';
$form['#prefix'] = $prefix;
}
}
}
ฟังก์ชัน _MY_MODULE_generate_webform_unique_id($webform_id) {
$static_var = &drupal_static(__FUNCTION__ . ':' . $webform_id);
ถ้า (!isset($static_var)) {
// สร้างเนื้อหาของตัวแปรคงที่
$static_var = 0;
}
อื่น {
$static_var += 1;
}
ส่งคืน $static_var;
}
ฉันสามารถเปลี่ยนรหัสแบบฟอร์มได้ แต่ข้อความยืนยันยังคงแสดงอยู่ในเว็บฟอร์มแรก
ฉันเห็นที่คล้ายกันที่นี่ https://drupal.stackexchange.com/a/272176/26797 แต่สำหรับรูปแบบที่กำหนดเอง ไม่แน่ใจว่าจะนำไปใช้กับเว็บฟอร์มได้อย่างไร
มีข้อผิดพลาดที่ฉันทำหรือวิธีการอื่น ๆ หรือไม่?
ขอขอบคุณล่วงหน้า.
แก้ไข
สำหรับวิธีแก้ปัญหาอย่างรวดเร็ว ขณะนี้ฉันเปลี่ยนรูปแบบทั้งหมดเพื่อแสดงในกล่องโต้ตอบโมดอลของ Drupal ดังนั้นแทนที่จะมีแบบฟอร์มปรากฏในหน้า ฉันใส่ลิงก์และผู้ใช้คลิกลิงก์เพื่อเปิดแบบฟอร์ม ไม่แน่ใจว่านี่เป็นข้อบกพร่องในเว็บฟอร์มหรือรหัสที่กำหนดเองของฉันกำลังยุ่งกับสิ่งต่างๆ ฉันจะต้องลองสิ่งนี้ในวานิลลา Drupal ในภายหลัง