public function RemoteStreamWrapperWidget::massageFormValues in Remote stream wrapper widget 8
Massages the form values into the format expected for field values.
Parameters
array $values: The submitted form values produced by the widget.
- If the widget does not manage multiple values itself, the array holds the values generated by the multiple copies of the $element generated by the formElement() method, keyed by delta.
- If the widget manages multiple values, the array holds the values of the form element generated by the formElement() method.
array $form: The form structure where field elements are attached to. This might be a full form structure, or a sub-element of a larger form.
\Drupal\Core\Form\FormStateInterface $form_state: The form state.
Return value
array An array of field values, keyed by delta.
Overrides WidgetBase::massageFormValues
File
- src/
Plugin/ Field/ FieldWidget/ RemoteStreamWrapperWidget.php, line 98
Class
- RemoteStreamWrapperWidget
- Plugin implementation of the 'remote_stream_wrapper' widget.
Namespace
Drupal\remote_stream_wrapper_widget\Plugin\Field\FieldWidgetCode
public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
$fileStorage = $this->entityTypeManager
->getStorage('file');
$new_values = [];
foreach ($values as $value) {
if (empty($value['url'])) {
continue;
}
/** @var \Drupal\file\FileInterface $file */
$files = $fileStorage
->loadByProperties([
'uri' => $value['url'],
]);
$file = reset($files);
if (!$file) {
$file = $fileStorage
->create([
'uri' => $value['url'],
'uid' => $this->currentUser
->id(),
]);
$file
->save();
}
$new_values[] = [
'target_id' => $file
->id(),
];
}
return $new_values;
}