public static function WebformElementComposite::valueCallback in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Element/WebformElementComposite.php \Drupal\webform\Element\WebformElementComposite::valueCallback()
Determines how user input is mapped to an element's #value property.
Parameters
array $element: An associative array containing the properties of the element.
mixed $input: The incoming input to populate the form element. If this is FALSE, the element's default value should be returned.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
mixed The value to assign to the element.
Overrides FormElement::valueCallback
File
- src/
Element/ WebformElementComposite.php, line 57
Class
- WebformElementComposite
- Provides a element for the composite elements.
Namespace
Drupal\webform\ElementCode
public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
if ($input === FALSE) {
if (!isset($element['#default_value']) || !is_array($element['#default_value'])) {
return [];
}
else {
$default_value = [];
foreach ($element['#default_value'] as $composite_key => $composite_element) {
$composite_element = [
'key' => $composite_key,
] + WebformArrayHelper::removePrefix($composite_element);
// Get supported properties.
$composite_properties = array_intersect_key($composite_element, static::$supportedProperties);
// Move 'unsupported' properties to 'custom'.
$custom_properties = array_diff_key($composite_element, static::$supportedProperties);
$composite_properties['custom'] = $custom_properties ? WebformYaml::encode($custom_properties) : '';
$default_value[] = $composite_properties;
}
$element['#default_value'] = $default_value;
return $default_value;
}
}
elseif (is_array($input)) {
return $input;
}
else {
return NULL;
}
}