Как получить отправленные данные формы из переданного токена - PullRequest
0 голосов
/ 13 мая 2019

В Drupal 8 (последняя версия) у меня есть многошаговая веб-форма, созданная с помощью модуля веб-формы. После выполнения последнего шага я попадаю на страницу подтверждения, 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 (идентификатор сеанса), и я не уверен, является ли этот токен идентификатором?

1 Ответ

0 голосов
/ 13 мая 2019

Нашел решение, посмотрев на действие подтверждения модуля веб-формы.Идет так:

    $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);
    }
...