Как внедрить веб-форму для обновления существующей отправки


Я пытаюсь отобразить веб-форму через контроллер модуля. Отображение веб-формы работает так, как должно, но мне нужно обновить существующие данные отправки, и вместо обновления существующей отправки создается новая.

Код, который я использую, выглядит так:

public function edit()
{
  $submissionId = \Drupal::request()->get('sid');
  $webform = Webform::load('eventsignup');
  $webformSubmission = WebformSubmission::load($submissionId);
  $webform = $webform->getSubmissionForm([
    'data' => $webformSubmission->getData()
  ]);

  $build['submissionForm'] = $webform;

  return $build;
}

Я попытался изменить его, выполнив операцию "редактировать" и установив "sid", но это приводит к ошибке дубликата ключа:

public function edit()
{
  $submissionId = \Drupal::request()->get('sid');

  $webform = Webform::load('eventsignup');
  $webformSubmission = WebformSubmission::load($submissionId);
  $webform = $webform->getSubmissionForm([
    'sid' => $submissionId,
    'data' => $webformSubmission->getData()
  ], 'edit');

  $build['submissionForm'] = $webform;

  return $build;
}

Что я делаю не так?

Спасибо за ваше помогите!

 1
Author: SMYR, 2018-07-17

1 answers

Существующие отправленные веб-формы являются сущностями, и вы можете использовать службу конструктора форм сущностей для создания формы:

// load the webform submission entity
$webformSubmission = WebformSubmission::load($submissionId);
// build a form for the entity
$webform = \Drupal::service('entity.form_builder')->getForm($webformSubmission, 'edit');
 1
Author: 4k4, 2018-07-17 14:05:18