public function FileBrowserWidget::massageFormValues in Entity Browser 8
Same name and namespace in other branches
- 8.2 src/Plugin/Field/FieldWidget/FileBrowserWidget.php \Drupal\entity_browser\Plugin\Field\FieldWidget\FileBrowserWidget::massageFormValues()
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 EntityReferenceBrowserWidget::massageFormValues
File
- src/
Plugin/ Field/ FieldWidget/ FileBrowserWidget.php, line 436
Class
- FileBrowserWidget
- Entity browser file widget.
Namespace
Drupal\entity_browser\Plugin\Field\FieldWidgetCode
public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
$ids = empty($values['target_id']) ? [] : explode(' ', trim($values['target_id']));
$return = [];
foreach ($ids as $id) {
$id = explode(':', $id)[1];
if (is_array($values['current']) && isset($values['current'][$id])) {
$item_values = [
'target_id' => $id,
'_weight' => $values['current'][$id]['_weight'],
];
if ($this->fieldDefinition
->getType() == 'file') {
if (isset($values['current'][$id]['meta']['description'])) {
$item_values['description'] = $values['current'][$id]['meta']['description'];
}
if ($this->fieldDefinition
->getSetting('display_field') && isset($values['current'][$id]['meta']['display_field'])) {
$item_values['display'] = $values['current'][$id]['meta']['display_field'];
}
}
if ($this->fieldDefinition
->getType() == 'image') {
if (isset($values['current'][$id]['meta']['alt'])) {
$item_values['alt'] = $values['current'][$id]['meta']['alt'];
}
if (isset($values['current'][$id]['meta']['title'])) {
$item_values['title'] = $values['current'][$id]['meta']['title'];
}
}
$return[] = $item_values;
}
}
// Return ourself as the structure doesn't match the default.
usort($return, function ($a, $b) {
return SortArray::sortByKeyInt($a, $b, '_weight');
});
return array_values($return);
}