public function WebformDevelSubmissionApiForm::buildForm in Webform 8.5
Same name and namespace in other branches
- 6.x modules/webform_devel/src/Form/WebformDevelSubmissionApiForm.php \Drupal\webform_devel\Form\WebformDevelSubmissionApiForm::buildForm()
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- modules/
webform_devel/ src/ Form/ WebformDevelSubmissionApiForm.php, line 79
Class
- WebformDevelSubmissionApiForm
- Form used to test programmatic submissions of webforms.
Namespace
Drupal\webform_devel\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
/** @var \Drupal\webform\WebformInterface $webform */
/** @var \Drupal\Core\Entity\EntityInterface $source_entity */
list($webform, $source_entity) = $this->requestHandler
->getWebformEntities();
$values = [];
// Set webform id.
$values['webform_id'] = $webform
->id();
// Set source entity type and id.
if ($source_entity) {
$values['entity_type'] = $source_entity
->getEntityTypeId();
$values['entity_id'] = $source_entity
->id();
}
WebformSubmission::preCreate($this->submissionStorage, $values);
// Generate data as last value.
unset($values['data']);
$values['data'] = $this->generate
->getData($webform);
$form['submission'] = [
'#type' => 'details',
'#title' => $this
->t('Submission values'),
'#open' => TRUE,
];
$form['submission']['message'] = [
'#type' => 'webform_message',
'#message_message' => $this
->t("Submitting the below values will trigger the %title webform's ::validateFormValues() and ::submitFormValues() callbacks.", [
'%title' => $webform
->label(),
]),
'#message_type' => 'warning',
];
$form['submission']['values'] = [
'#type' => 'webform_codemirror',
'#mode' => 'yaml',
'#title' => $this
->t('Values'),
'#title_display' => 'hidden',
'#default_value' => $values,
];
$form['php'] = [
'#type' => 'details',
'#title' => $this
->t('PHP usage'),
'#description' => $this
->t('Below is an example of how to programatically validate and submit a webform submission using PHP.'),
];
$form['php']['code'] = [
'#type' => 'webform_codemirror',
'#mode' => 'php',
'#title' => $this
->t('PHP'),
'#title_display' => 'hidden',
'#attributes' => [
'readonly' => 'readonly',
'disabled' => 'disabled',
],
'#default_value' => '
// Get submission values and data.
$values = ' . Variable::export($values) . ';
// Check that the webform is open.
$webform = \\Drupal\\webform\\entity\\Webform::load(\'' . $webform
->id() . '\');
$is_open = \\Drupal\\webform\\WebformSubmissionForm::isOpen($webform);
if ($is_open === TRUE) {
// Validate webform submission values.
$errors = \\Drupal\\webform\\WebformSubmissionForm::validateFormValues($values);
// Submit webform submission values.
if (empty($errors)) {
$webform_submission = \\Drupal\\webform\\WebformSubmissionForm::submitFormValues($values);
}
}',
];
$form['actions'] = [];
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Submit'),
];
return $form;
}