Score:-1

ฉันจะเพิ่ม ajax callback ให้กับ form element ซึ่งสร้างใน foreach loop ได้อย่างไร

ธง cn

โปรดดูรหัสต่อไปนี้:

foreach ($formaddresses เป็น $key => $val) {
  // เพิ่มปุ่มแก้ไขไปยังที่อยู่ที่สร้างจากฝั่งไคลเอ็นต์แบบกำหนดเอง
  ถ้า (!isset($val['หมายเลขบัญชี'])) {
    $form['orderinfo']['billshipaddresses']['billingaddresses'][$key]['#description'] = '<a class="edit-stored-address edit-stored-address-target-' . $ คีย์ . '">แก้ไข</a>';
    $form['orderinfo']['billshipaddresses']['shippingaddresses'][$key]['#description'] = '<a class="edit-stored-address edit-stored-address-target-' . $ คีย์ . '">แก้ไข</a>';
  }
}

ที่นี่ลูปนี้กำลังสร้างจุดยึดในแบบฟอร์มของฉัน ฉันแค่ต้องทำ แนบ/เพิ่มการโทรกลับ '#ajax' ไปมัน ฉันจะบรรลุสิ่งนี้ได้อย่างไร

บางอย่างเช่นรหัสต่อไปนี้:

$form['orderinfo']['billshipaddresses']['ที่อยู่จัดส่ง'] = [
  '#type' => 'วิทยุ',
  '#title' => 'ที่อยู่ในการจัดส่ง',
  '#options' => $formaddressesOptions,
  '#default_value' => '',
  '#อาแจ็กซ์' => [
    'callback' => '::buildShipBillAddresses',
    'wrapper' => 'ที่อยู่จัดส่ง',
    'เหตุการณ์' => 'เปลี่ยนแปลง'
  ]
];

ที่นี่เราสามารถดูว่าวิทยุด้านบนมีการเปลี่ยนแปลงหรือไม่การโทรกลับของ ajax จะทำงานและจะเรียกวิธีนี้ สร้างที่อยู่ ShipBill ขอบคุณ!

Score:1
ธง us

จริงๆ แล้ว องค์ประกอบจุดยึดที่คุณต้องการเพิ่มการเรียกกลับ AJAX ไม่ใช่องค์ประกอบฟอร์ม เดอะ อาแจ็กซ์ API หน้าบอกวิธีเรียกใช้ AJAX สำหรับลิงก์

เพิ่มคลาส 'use-ajax' ให้กับลิงค์ ลิงค์จะถูกโหลดโดยใช้การโทร Ajax เมื่อใช้วิธีนี้ href ของลิงก์สามารถมี '/nojs/' เป็นส่วนหนึ่งของเส้นทางได้ เมื่อ Ajax JavaScript ประมวลผลเพจ มันจะแปลงเป็น '/ajax/' จากนั้นเซิร์ฟเวอร์จะสามารถบอกได้อย่างง่ายดายว่าคำขอนี้ทำผ่านคำขอ Ajax จริงหรืออยู่ในสถานะที่เสื่อมประสิทธิภาพ และตอบสนองอย่างเหมาะสม

ซึ่งหมายความว่าสำหรับลิงก์ โค้ดต่อไปนี้จะใช้งานได้

foreach ($formaddresses เป็น $key => $val) {
  // เพิ่มปุ่มแก้ไขไปยังที่อยู่ที่สร้างจากฝั่งไคลเอ็นต์แบบกำหนดเอง
  ถ้า (!isset($val['หมายเลขบัญชี'])) {
    $form['orderinfo']['billshipaddresses']['billingaddresses'][$key]['#description'] = '<a href="/nojs/edit-billing-address" class="use-ajax แก้ไข -stored-address edit-stored-address-target-' . $key . '">แก้ไข</a>';
    $form['orderinfo']['billshipaddresses']['shippingaddresses'][$key]['#description'] = '<a href="/nojs/edit-shipping-address" class="use-ajax แก้ไข -stored-address edit-stored-address-target-' . $key . '">แก้ไข</a>';
  }
}

โมดูลจำเป็นต้องกำหนดสองเส้นทางสำหรับลิงก์เหล่านั้น ฉันไม่สามารถบอกรหัสสำหรับการเรียกกลับเส้นทางเหล่านั้นแก่คุณ แต่พวกเขาควรแสดงผล แก้ไข แบบฟอร์มเพื่อให้ปรากฏบนแบบฟอร์มนั้น

Score:0
ธง de

นี่ไม่ใช่คำถาม Drupal มากเท่ากับคำถาม PHP แต่เพื่อตอบคำถามของคุณ:

foreach ($formaddresses เป็น $key => $val) {
  // เพิ่มปุ่มแก้ไขไปยังที่อยู่ที่สร้างจากฝั่งไคลเอ็นต์แบบกำหนดเอง
  ถ้า (!isset($val['หมายเลขบัญชี'])) {
    $form['orderinfo']['billshipaddresses']['billingaddresses'][$key]['#ajax'] = [
      'callback' => '::buildShipBillAddresses',
      'wrapper' => 'ที่อยู่จัดส่ง',
      'เหตุการณ์' => 'เปลี่ยนแปลง'
    ];
  }
}

โพสต์คำตอบ

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