class WebformSubmissionResource in Webform REST 8.2
Same name and namespace in other branches
- 8.3 src/Plugin/rest/resource/WebformSubmissionResource.php \Drupal\webform_rest\Plugin\rest\resource\WebformSubmissionResource
- 4.x src/Plugin/rest/resource/WebformSubmissionResource.php \Drupal\webform_rest\Plugin\rest\resource\WebformSubmissionResource
Creates a resource for retrieving webform submission data.
Plugin annotation
@RestResource(
id = "webform_rest_submission",
label = @Translation("Webform Submission"),
uri_paths = {
"canonical" = "/webform_rest/{webform_id}/submission/{sid}"
}
)
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\WebformSubmissionResource
- class \Drupal\rest\Plugin\ResourceBase implements ContainerFactoryPluginInterface, ResourceInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of WebformSubmissionResource
File
- src/
Plugin/ rest/ resource/ WebformSubmissionResource.php, line 23
Namespace
Drupal\webform_rest\Plugin\rest\resourceView source
class WebformSubmissionResource extends ResourceBase {
/**
* The request object.
*
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
protected $request;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$instance = parent::create($container, $configuration, $plugin_id, $plugin_definition);
$instance->request = $container
->get('request_stack');
return $instance;
}
/**
* Retrieve submission data.
*
* @param string $webform_id
* Webform ID.
* @param int $sid
* Submission ID.
*
* @return \Drupal\rest\ModifiedResourceResponse
* HTTP response object containing webform submission.
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* Throws HttpException in case of error.
*/
public function get($webform_id, $sid) {
if (empty($webform_id) || empty($sid)) {
$errors = [
'error' => [
'message' => 'Both webform ID and submission ID are required.',
],
];
return new ModifiedResourceResponse($errors);
}
// Load the webform submission.
$webform_submission = WebformSubmission::load($sid);
// Check for a submission.
if (!empty($webform_submission)) {
$submission_webform_id = $webform_submission
->get('webform_id')
->getString();
// Check webform_id.
if ($submission_webform_id == $webform_id) {
// Grab submission data.
$data = $webform_submission
->getData();
$response = [
'entity' => $webform_submission,
'data' => $data,
];
// Return the submission.
return new ModifiedResourceResponse($response);
}
}
throw new NotFoundHttpException(t("Can't load webform submission."));
}
/**
* Update submission data.
*
* @param string $webform_id
* Webform ID.
* @param int $sid
* Submission ID.
*
* @return \Drupal\rest\ModifiedResourceResponse
* HTTP response object containing webform submission.
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* Throws HttpException in case of error.
*/
public function patch($webform_id, $sid) {
if (empty($webform_id) || empty($sid)) {
$errors = [
'error' => [
'message' => 'Both webform ID and submission ID are required.',
],
];
return new ModifiedResourceResponse($errors);
}
$webform_data = $this->request
->getCurrentRequest()
->getContent();
if (empty($webform_data)) {
$errors = [
'error' => [
'message' => 'No data has been submitted.',
],
];
return new ModifiedResourceResponse($errors);
}
$webform_data = json_decode($webform_data, TRUE);
// Load the webform submission.
$webform_submission = WebformSubmission::load($sid);
// Check for a submission.
if (!empty($webform_submission)) {
$submission_webform_id = $webform_submission
->get('webform_id')
->getString();
// Check webform_id.
if ($submission_webform_id == $webform_id) {
foreach ($webform_data as $field => $value) {
$webform_submission
->setElementData($field, $value);
}
$errors = WebformSubmissionForm::validateWebformSubmission($webform_submission);
// Check there are no validation errors.
if (!empty($errors)) {
$errors = [
'error' => $errors,
];
return new ModifiedResourceResponse($errors);
}
else {
// Return submission ID.
$webform_submission = WebformSubmissionForm::submitWebformSubmission($webform_submission);
}
// Return submission ID.
return new ModifiedResourceResponse([
'sid' => $webform_submission
->id(),
]);
}
}
throw new NotFoundHttpException(t("Can't load webform submission."));
}
}
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:: |
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. | |
WebformSubmissionResource:: |
protected | property | The request object. | |
WebformSubmissionResource:: |
public static | function |
Creates an instance of the plugin. Overrides ResourceBase:: |
|
WebformSubmissionResource:: |
public | function | Retrieve submission data. | |
WebformSubmissionResource:: |
public | function | Update submission data. |