Score:0

อัปเดตฟิลด์เนื้อหาจากการโทรกลับของ ajax

ธง cn

ฉันจำเป็นต้องอัปเดตฟิลด์ "เนื้อหา" ทั่วไปเมื่อฉันเปลี่ยนค่าฟิลด์บางย่อหน้า

นี่คือ hook_form_alter ของฉัน:

$form["body"]["#prefix"] = "<div id='body__update_real_time_seo'>";
$form["body"]["#suffix"] = "</div>";

$form["field_content_edito"]["widget"][3]["subform"]["field_paragraph_subtitle"]["widget"][0]["value"]["#ajax"] = [
    "callback" => "_update_real_time_seo",
    "เหตุการณ์" => "การเปลี่ยนแปลง",
    "wrapper" => "body__update_real_time_seo",
    "วิธีการ" => "แทนที่",
];

และการโทรกลับที่กำหนดเองของฉัน:

ฟังก์ชัน _update_real_time_seo (&$form, FormStateInterface $form_state) {
    $form["body"]["widget"][0]["#default_value"] = "ตกลง";
    กลับ $form["body"];
}

เมื่อฉันเปลี่ยนช่องย่อหน้า ฉันได้รับข้อความ "โปรดรอสักครู่..." แต่ไม่มีอะไรเกิดขึ้น ฉันยังคงเห็นค่าเดิม "ตกลง" ติดปัญหานี้ตั้งแต่ไม่กี่ชั่วโมงด้วยการพยายามแก้ไขหลายครั้งจาก stackoverflow

PS: เมื่อฉันทิ้งก่อน "ส่งคืน" ฉันเห็นค่าใหม่ของฉัน "ตกลง"

หวังว่าทุกคนสามารถช่วยฉันได้ ขอบคุณล่วงหน้า.

No Sssweat avatar
ua flag
ลองใช้ `#value` แทน
cn flag
@NoSssweat มันยังคงแสดงค่าเก่าหลังจากรีเฟรช
No Sssweat avatar
ua flag
หลังจากรัน ajax มีข้อผิดพลาด JS ในคอนโซลของเบราว์เซอร์หรือไม่
No Sssweat avatar
ua flag
เพื่อวัตถุประสงค์ในการดีบัก หากคุณพยายามเปลี่ยนค่า body โดยไม่ใช้ ajax จะใช้งานได้หรือไม่
cn flag
@NoSssweat ไม่มีอะไรในคอนโซล และใช่ ถ้าฉันเปลี่ยนค่า body แล้วบันทึก ฉันจะเห็นค่าใหม่หลังจากโหลดซ้ำ
berliner avatar
bd flag
@guish ไม่แน่ใจว่านี่เป็นปัญหาของคุณหรือไม่ แต่รูปแบบทั่วไปสำหรับ AJAX ที่มี Form API คือ (1) สร้างทุกอย่างในวิธีการสร้างแบบฟอร์ม (แก้ไขแบบฟอร์มในกรณีของคุณ) (2) ใช้ฟังก์ชันการโทรกลับ AJAX เพื่อส่งคืนเท่านั้น ส่วนเฉพาะของแบบฟอร์มที่ควรเปลี่ยนโดยใช้ตัวเลือก wrapper นั่นและ `#value` แทนที่จะเป็น `#default_value` ได้ผลสำหรับฉัน หรือคุณสามารถเรียกใช้ AjaxResponse (ดู https://www.drupal.org/docs/drupal-apis/javascript-api/ajax-forms#s-example-dynamic-textfield) ฟิลด์เนื้อหาที่อาจขับเคลื่อนโดย CKEditor อาจทำให้สิ่งต่าง ๆ ซับซ้อนยิ่งขึ้น

โพสต์คำตอบ

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