如何从传递的令牌中获取提交的表单数据
How to get submitted form data from passed token
在 Drupal 8(最新版本)中,我使用 webform 模块创建了多步 webform。提交最后一步后,我最终进入了确认页面,url 看起来像:
/node/1/webform/confirmation?token=KxCIo9eUxHC_XJKtDG8erszn5BL5UHBZnRrvJU7Kirw
现在,我想创建自定义确认页面,并且我已经创建了模块来创建自定义页面并且可以正常工作。它应该被称为类似的方式:
/confirmation?token=KxCIo9eUxHC_XJKtDG8erszn5BL5UHBZnRrvJU7Kirw
我的问题是:如何使用这个令牌值来收集提交的表单数据?
从我的确认页面控制器尝试过类似的操作:
$token = \Drupal::request()->query->get('token');
$webform_submission = \Drupal\webform\Entity\WebformSubmission::load($token);
// Get submission data.
$data = $webform_submission->getData();
// var_dump($data);
$token
值收集得很好,但是当我尝试使用它来获取 $webform_submissions
我得到空值并且收集 $data
当然在下一行失败。
load()
方法需要 $sid
(会话 ID),我不确定这个令牌是那个 ID 吗?
通过查看网络表单模块确认操作找到了解决方案。是这样的:
$token = \Drupal::request()->query->get('token');
if ($token) {
/** @var \Drupal\webform\WebformSubmissionStorageInterface $webform_submission_storage */
$webform_submission_storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
if ($entities = $webform_submission_storage->loadByProperties(['token' => $token])) {
$webform_submission = reset($entities);
}
$data = $webform_submission->getData();
var_dump($data);
}
在 Drupal 8(最新版本)中,我使用 webform 模块创建了多步 webform。提交最后一步后,我最终进入了确认页面,url 看起来像:
/node/1/webform/confirmation?token=KxCIo9eUxHC_XJKtDG8erszn5BL5UHBZnRrvJU7Kirw
现在,我想创建自定义确认页面,并且我已经创建了模块来创建自定义页面并且可以正常工作。它应该被称为类似的方式:
/confirmation?token=KxCIo9eUxHC_XJKtDG8erszn5BL5UHBZnRrvJU7Kirw
我的问题是:如何使用这个令牌值来收集提交的表单数据?
从我的确认页面控制器尝试过类似的操作:
$token = \Drupal::request()->query->get('token');
$webform_submission = \Drupal\webform\Entity\WebformSubmission::load($token);
// Get submission data.
$data = $webform_submission->getData();
// var_dump($data);
$token
值收集得很好,但是当我尝试使用它来获取 $webform_submissions
我得到空值并且收集 $data
当然在下一行失败。
load()
方法需要 $sid
(会话 ID),我不确定这个令牌是那个 ID 吗?
通过查看网络表单模块确认操作找到了解决方案。是这样的:
$token = \Drupal::request()->query->get('token');
if ($token) {
/** @var \Drupal\webform\WebformSubmissionStorageInterface $webform_submission_storage */
$webform_submission_storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
if ($entities = $webform_submission_storage->loadByProperties(['token' => $token])) {
$webform_submission = reset($entities);
}
$data = $webform_submission->getData();
var_dump($data);
}