В моей форме AJAX пользователь должен выполнить проверку, так как ему нужен код для ввода остальной части формы (у нее 3 страницы или более). У меня есть обработчик для проверки этого, и этот же обработчик использует этот код для получения узла:
// НА обработчике validate()
$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, строка $name, строка $code)
{
вернуть $this->entityTypeManager->getStorage('узел')
->загрузить по свойствам([
'тип' => 'ХХХХХ',
'событие' => $node_id,
'имя' => $имя,
'код' => $код,
]);
}
общедоступная функция confirmForm (массив и $ форма, FormStateInterface $ form_state, WebformSubmissionInterface $ webform_submission) {
//Если отправка прошла успешно, удаляем приватный магазин
$this->sessionManager->delete('code_valid');
}
Моя проблема в том, что нет способа $this->sessionManager->удалить('code_valid') если пользователь покидает форму. Поэтому я искал способ сохранить результат проверки, не прибегая к sessionManager/privatestoremanager.
Если вам нужно больше контекста, веб-форма настроена для использования с определенным типом контента (A). Он используется для создания/обновления/удаления другого типа контента (B). Между ними существует отношение «один ко многим», поэтому эта форма будет динамически создавать несколько B, в зависимости от отправленного содержимого формы — она может создать до 5 из B. Первый шаг — это проверка/аутентификация, чтобы иметь возможность использовать «настоящий» форме (следующие шаги после первого).
Заранее спасибо!