ในแบบฟอร์ม AJAX ของฉัน ผู้ใช้ต้องทำการตรวจสอบ เนื่องจากเขาต้องการรหัสเพื่อป้อนส่วนที่เหลือของแบบฟอร์ม (มี 3 หน้าขึ้นไป) ฉันมีตัวจัดการเพื่อตรวจสอบสิ่งนี้และตัวจัดการเดียวกันนี้ใช้รหัสนั้นเพื่อรับโหนด:
// บนตัวจัดการตรวจสอบ ()
$code_valid= $this->sessionManager->get('code_valid');
ถ้า (ว่าง($code_valid))
{
$this->handlerProperty = $this->contentService->getContentByCodeAndCurrentNodeId($node_id, $name, $code);
$this->sessionManager->set('code_valid', $this->handlerProperty);
}
// บนที่เก็บคลาส
ฟังก์ชันสาธารณะ getContentByCodeAndCurrentNodeId(int $node_id, string $name, string $code)
{
คืนค่า $this->entityTypeManager->getStorage('node')
->loadByProperties([
'ประเภท' => 'XXXXXX',
'เหตุการณ์' => $node_id,
'ชื่อ' => $ชื่อ,
'code' => $code,
]);
}
ฟังก์ชั่นสาธารณะ ConfirmForm (อาร์เรย์ & $ ฟอร์ม, FormStateInterface $ form_state, WebformSubmissionInterface $ webform_submission) {
//หากส่งสำเร็จ ลบร้านค้าส่วนตัว
$this->sessionManager->delete('code_valid');
}
ปัญหาของฉันคือไม่มีทางที่จะ $this->sessionManager->ลบ ('code_valid') หากผู้ใช้ออกจากแบบฟอร์ม ดังนั้นฉันจึงมองหาวิธียืนยันผลการตรวจสอบโดยไม่ต้องหันไปใช้ sessionManager/privatestoremanager
หากคุณต้องการบริบทเพิ่มเติม เว็บฟอร์มจะถูกตั้งค่าเพื่อใช้กับประเภทเนื้อหาเฉพาะ (A) ใช้เพื่อสร้าง/อัปเดต/ลบเนื้อหาประเภทอื่น (B) เป็นความสัมพันธ์แบบหนึ่งต่อหลายความสัมพันธ์ ดังนั้นแบบฟอร์มนี้จะสร้าง B หลายรายการแบบไดนามิก ขึ้นอยู่กับเนื้อหาของแบบฟอร์มที่ส่ง - สามารถสร้างได้สูงสุด 5 รายการของ B ขั้นตอนแรกคือการตรวจสอบ/รับรองความถูกต้องเพื่อให้สามารถใช้ "จริง" แบบฟอร์ม (ขั้นตอนถัดไปหลังจากครั้งแรก)
ขอบคุณล่วงหน้า!