public function WebformTestController::testForm in Webform 8.5
Same name and namespace in other branches
- 6.x src/Controller/WebformTestController.php \Drupal\webform\Controller\WebformTestController::testForm()
Returns a webform to add a new test submission to a webform.
Parameters
\Symfony\Component\HttpFoundation\Request $request: The current request.
Return value
array The webform submission webform.
2 string references to 'WebformTestController::testForm'
- webform.routing.yml in ./
webform.routing.yml - webform.routing.yml
- webform_node.routing.yml in modules/
webform_node/ webform_node.routing.yml - modules/webform_node/webform_node.routing.yml
File
- src/
Controller/ WebformTestController.php, line 89
Class
- WebformTestController
- Provides route responses for Webform testing.
Namespace
Drupal\webform\ControllerCode
public function testForm(Request $request) {
/** @var \Drupal\webform\WebformInterface $webform */
/** @var \Drupal\Core\Entity\EntityInterface $source_entity */
list($webform, $source_entity) = $this->requestHandler
->getWebformEntities();
// Test a single webform handler which is set via
// ?_webform_handler={handler_id}.
$test_webform_handler = $request->query
->get('_webform_handler');
if ($test_webform_handler) {
// Make sure the handler exists.
if (!$webform
->getHandlers()
->has($test_webform_handler)) {
$t_args = [
'%webform' => $webform
->label(),
'%handler' => $test_webform_handler,
];
$this->messenger
->addWarning($this
->t('The %handler email/handler for the %webform webform does not exist.', $t_args));
throw new AccessDeniedHttpException();
}
// Enable only the selected handler for testing
// and disable all other handlers.
$handlers = $webform
->getHandlers();
foreach ($handlers as $handler_id => $handler) {
if ($handler_id === $test_webform_handler) {
$handler
->setStatus(TRUE);
$t_args = [
'%webform' => $webform
->label(),
'%handler' => $handler
->label(),
'@type' => $handler instanceof EmailWebformHandler ? $this
->t('email') : $this
->t('handler'),
];
$this->messenger
->addWarning($this
->t('Testing the %webform webform %handler @type. <strong>All other emails/handlers are disabled.</strong>', $t_args));
}
else {
$handler
->setStatus(FALSE);
}
}
// Set override to prevent the webform's altered handler statuses
// from being saved.
$webform
->setOverride(TRUE);
}
// Set values.
$values = [];
// Set source entity type and id.
if ($source_entity) {
$values['entity_type'] = $source_entity
->getEntityTypeId();
$values['entity_id'] = $source_entity
->id();
// Add source entity's default data to values data.
$field_names = $this->entityReferenceManager
->getFieldNames($source_entity);
foreach ($field_names as $field_name) {
if ($source_entity
->get($field_name)->target_id === $webform
->id() && $source_entity
->get($field_name)->default_data) {
$values['data'] = Yaml::decode($source_entity
->get($field_name)->default_data);
}
}
}
return $webform
->getSubmissionForm($values, 'test');
}