Trong biểu mẫu AJAX của tôi, người dùng phải thực hiện xác thực vì anh ta cần mã để nhập phần còn lại của biểu mẫu (có 3 trang trở lên). Tôi có một trình xử lý để xác thực điều này và trình xử lý tương tự này sử dụng mã đó để nhận một nút:
// BẬT trình xử lý xác thực()
$code_valid= $this->sessionManager->get('code_valid');
nếu (trống($code_valid))
{
$this->handlerProperty = $this->contentService->getContentByCodeAndCurrentNodeId($node_id, $name, $code);
$this->sessionManager->set('code_valid', $this->handlerProperty);
}
// Trên lớp kho lưu trữ
hàm công khai getContentByCodeAndCurrentNodeId(int $node_id, chuỗi $name, chuỗi $code)
{
trả về $this->entityTypeManager->getStorage('node')
->loadByProperties([
'loại' => 'XXXXX',
'sự kiện' => $node_id,
'tên' => $tên,
'mã' => mã $,
]);
}
hàm công khai confirmForm(mảng &$form, FormStateInterface $form_state, WebformSubmissionInterface $webform_submission) {
// Nếu gửi thành công, xóa cửa hàng riêng
$this->sessionManager->delete('code_valid');
}
Vấn đề của tôi là không có cách nào để $this->sessionManager->delete('code_valid') nếu người dùng rời khỏi biểu mẫu. Vì vậy, tôi đang tìm cách duy trì kết quả xác thực mà không cần dùng đến sessionManager/privatestoremanager.
Nếu bạn muốn có thêm ngữ cảnh, biểu mẫu web được thiết lập để sử dụng trên một loại nội dung cụ thể (A). Nó được sử dụng để tạo/cập nhật/xóa loại nội dung khác (B). Đó là mối quan hệ một-nhiều giữa chúng, vì vậy biểu mẫu này sẽ tự động tạo nhiều B, tùy thuộc vào nội dung biểu mẫu được gửi - nó có thể tạo tối đa 5 B. Bước đầu tiên là xác thực/xác thực để có thể sử dụng "thực" biểu mẫu (các bước tiếp theo sau bước đầu tiên).
Cảm ơn trước!