În formularul meu AJAX utilizatorul trebuie să facă o validare deoarece are nevoie de un cod pentru a introduce restul formularului (are 3 pagini sau mai multe). Am un handler pentru a valida acest lucru și același handler folosește acel cod pentru a obține un nod:
// PE handler validate()
$code_valid= $this->sessionManager->get('code_valid');
dacă (gol ($code_valid))
{
$this->handlerProperty = $this->contentService->getContentByCodeAndCurrentNodeId($node_id, $name, $code);
$this->sessionManager->set('code_valid', $this->handlerProperty);
}
// Pe clasa de depozit
funcția publică getContentByCodeAndCurrentNodeId(int $node_id, șir $nume, șir $cod)
{
returnează $this->entityTypeManager->getStorage('nod')
->loadByProperties([
'type' => 'XXXXXX',
'eveniment' => $node_id,
'nume' => $nume,
'cod' => $cod,
]);
}
funcția publică confirmForm(matrice &$form, FormStateInterface $form_state, WebformSubmissionInterface $webform_submission) {
//Dacă trimiterile au succes, ștergeți magazinul privat
$this->sessionManager->delete('code_valid');
}
Problema mea este că nu există nicio modalitate $this->sessionManager->delete('code_valid') dacă utilizatorul pleacă în mijlocul formularului. Așa că căutam o modalitate de a persista rezultatul validării, fără a apela la sessionManager/privatestoremanager.
Dacă doriți mai mult context, formularul web este configurat pentru a fi utilizat pentru un anumit tip de conținut (A). Este folosit pentru a crea/actualiza/șterge un alt tip de conținut (B). Este o relație unu-la-mulți între ele, așa că acest formular va crea mai multe B în mod dinamic, în funcție de conținutul formularului trimis - poate crea până la 5 din B. Primul pas este o validare/autorizare pentru a putea folosi „real” formular (pașii următori după primul).
Mulțumesc anticipat!