class WebformSubmitResource in Webform REST 8
Same name and namespace in other branches
- 8.3 src/Plugin/rest/resource/WebformSubmitResource.php \Drupal\webform_rest\Plugin\rest\resource\WebformSubmitResource
- 8.2 src/Plugin/rest/resource/WebformSubmitResource.php \Drupal\webform_rest\Plugin\rest\resource\WebformSubmitResource
- 4.x src/Plugin/rest/resource/WebformSubmitResource.php \Drupal\webform_rest\Plugin\rest\resource\WebformSubmitResource
Creates a resource for submitting a webform.
Plugin annotation
@RestResource(
  id = "webform_rest_submit",
  label = @Translation("Webform Submit"),
  uri_paths = {
    "canonical" = "/webform_rest/submit",
    "https://www.drupal.org/link-relations/create" = "/webform_rest/submit"
  }
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait- class \Drupal\rest\Plugin\ResourceBase implements ContainerFactoryPluginInterface, ResourceInterface- class \Drupal\webform_rest\Plugin\rest\resource\WebformSubmitResource
 
 
- class \Drupal\rest\Plugin\ResourceBase implements ContainerFactoryPluginInterface, ResourceInterface
 
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of WebformSubmitResource
File
- src/Plugin/ rest/ resource/ WebformSubmitResource.php, line 24 
Namespace
Drupal\webform_rest\Plugin\rest\resourceView source
class WebformSubmitResource extends ResourceBase {
  /**
   * Responds to entity POST requests and saves the new entity.
   *
   * @param array $webform_data
   *   Webform field data and webform ID.
   *
   * @return \Drupal\rest\ResourceResponse
   *   The HTTP response object.
   *
   * @throws \Symfony\Component\HttpKernel\Exception\HttpException
   *   Throws HttpException in case of error.
   */
  public function post(array $webform_data) {
    // Basic check for webform ID.
    if (empty($webform_data['webform_id'])) {
      $errors = [
        'error' => [
          'code' => '500',
        ],
      ];
      return new JsonResponse($errors, 500);
    }
    // Convert to webform values format.
    $values = [
      'webform_id' => $webform_data['webform_id'],
      'entity_type' => NULL,
      'entity_id' => NULL,
      'in_draft' => FALSE,
      'uri' => '/webform/' . $webform_data['webform_id'] . '/api',
    ];
    // Don't submit webform ID.
    unset($webform_data['webform_id']);
    $values['data'] = $webform_data;
    // Check for a valid webform.
    $webform = Webform::load($values['webform_id']);
    if (!$webform) {
      $errors = [
        'error' => [
          'message' => 'Invalid webform_id value.',
        ],
      ];
      return new ModifiedResourceResponse($errors);
    }
    // Check webform is open.
    $is_open = WebformSubmissionForm::isOpen($webform);
    if ($is_open === TRUE) {
      // Validate submission.
      $errors = WebformSubmissionForm::validateValues($values);
      // Check there are no validation errors.
      if (!empty($errors)) {
        $errors = [
          'error' => $errors,
        ];
        return new ResourceResponse($errors);
      }
      else {
        // Return submission ID.
        $webform_submission = WebformSubmissionForm::submitValues($values);
        return new ModifiedResourceResponse([
          'sid' => $webform_submission
            ->id(),
        ]);
      }
    }
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| DependencySerializationTrait:: | protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| DependencySerializationTrait:: | protected | property | An array of service IDs keyed by property name used for serialization. | |
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| MessengerTrait:: | protected | property | The messenger. | 29 | 
| MessengerTrait:: | public | function | Gets the messenger. | 29 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| PluginBase:: | protected | property | Configuration information passed into the plugin. | 1 | 
| PluginBase:: | protected | property | The plugin implementation definition. | 1 | 
| PluginBase:: | protected | property | The plugin_id. | |
| PluginBase:: | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
| PluginBase:: | public | function | Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | 3 | 
| PluginBase:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Determines if the plugin is configurable. | |
| ResourceBase:: | protected | property | A logger instance. | |
| ResourceBase:: | protected | property | The available serialization formats. | |
| ResourceBase:: | public | function | Returns the available HTTP request methods on this plugin. Overrides ResourceInterface:: | 1 | 
| ResourceBase:: | public static | function | Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: | 3 | 
| ResourceBase:: | protected | function | Gets the base route for a particular method. | 2 | 
| ResourceBase:: | protected | function | Gets the base route requirements for a particular method. | 1 | 
| ResourceBase:: | public | function | Implements ResourceInterface::permissions(). Overrides ResourceInterface:: | 2 | 
| ResourceBase:: | protected | function | Provides predefined HTTP request methods. | |
| ResourceBase:: | public | function | Returns a collection of routes with URL path information for the resource. Overrides ResourceInterface:: | |
| ResourceBase:: | public | function | Constructs a Drupal\rest\Plugin\ResourceBase object. Overrides PluginBase:: | 3 | 
| StringTranslationTrait:: | protected | property | The string translation service. | 1 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | |
| WebformSubmitResource:: | public | function | Responds to entity POST requests and saves the new entity. | 
