ฉันกำลังทำงานกับฟังก์ชันที่กำหนดเองภายในมุมมองตารางที่เปิดใช้งานแบบฟอร์ม 'แก้ไขด่วน' เป็นฟิลด์ที่พร้อมใช้งานผ่านปลั๊กอินฟิลด์มุมมอง
ฟอร์มจะแสดงในแต่ละแถวแยกกันโดยใช้ sub_id เฉพาะที่ส่งผ่านไปยังตัวสร้างฟอร์มสำหรับแต่ละแถว
ฉันมีแบบฟอร์มที่ใช้งานได้และมันทำหน้าที่ส่งอย่างถูกต้อง แต่ปัญหาคือฉันต้องทำสองสิ่งบน ajax callback ดังนั้นฉันจึงใช้ระบบ AjaxResponse() เพื่อดำเนินการสองอย่างที่แตกต่างกัน
การดำเนินการแรกคือการอัปเดต 'ค่า' ของคอลัมน์ที่ระบุในแถวมุมมอง ประการที่สองโดยพื้นฐานแล้วเพียงแค่ทำ return $form; เพื่อคืนฟอร์ม
ปัญหาคือ เมื่อแบบฟอร์มทำการตรวจสอบ การตรวจสอบจะทำงาน ยกเว้นว่าข้อความจะไม่แสดงจนกว่าฉันจะรีเฟรชหน้า ฉันไม่รู้ว่าจะบอกได้อย่างไรว่าจะใช้ wrapper ใดในการแสดงข้อความฟอร์ม เนื่องจากฉันส่งสองอันที่แตกต่างกันไปยังการตอบสนองของ ajax เนื่องจากฉันต้องทำการเปลี่ยนแปลงสองครั้ง
รหัสที่ฉันใช้ภายใน ajax callback คือ:
ฟังก์ชันสาธารณะ quickEditAjax (&$form, FormStateInterface $form_state) {
$values = $form_state->getValues();
$response = ใหม่ AjaxResponse();
$status = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($values['status']);
$response->addCommand(new ReplaceCommand('.request-status-'. $values['id'],$status->getName()));
$response->addCommand(new ReplaceCommand('#quick-edit-wrapper-'. $this->sub_id,$form));
ส่งคืน $response;
}
ที่ไหน #quick-edit-wrapper-$this->sub_id
เป็นชุด #id เฉพาะบนแบบฟอร์ม และ .request-status-$values['id']
เป็นคลาสที่แนบมากับคอลัมน์มุมมองตารางที่ฉันพยายามเปลี่ยน
ทั้งฟอร์มและคอลัมน์ตารางมีรหัสและคลาสที่ถูกต้อง และคอลัมน์จะอัปเดตสำเร็จผ่านการเรียกกลับ ajax addCommand()
ข้อความแสดงข้อผิดพลาดในการตรวจสอบไม่ปรากฏใน wrapper อย่างใดอย่างหนึ่ง แต่ฉันต้องการให้ปรากฏใน #quick-แก้ไขห่อ
กระดาษห่อ หากไม่มีข้อผิดพลาดในการตรวจสอบและการส่งผ่าน ฉันยังส่งข้อความยืนยันความสำเร็จและข้อความนั้นจะไม่ปรากฏขึ้นจนกว่าฉันจะรีเฟรชหน้านี้
มีวิธีที่ฉันสามารถบอกข้อความได้อย่างเฉพาะเจาะจงหรือไม่ว่าจะใช้ wrapper ใดในการแสดงผล การตอบสนองของ ajax ดูเหมือนจะสับสนว่าควรใช้อันไหน