public static Datetime::valueCallback(&$element, $input, FormStateInterface $form_state)
Determines how user input is mapped to an element's #value property.
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.
mixed The value to assign to the element.
Overrides FormElement::valueCallback
public static function valueCallback(&$element, $input, FormStateInterface $form_state) { if ($input !== FALSE) { $date_input = $element['#date_date_element'] != 'none' && !empty($input['date']) ? $input['date'] : ''; $time_input = $element['#date_time_element'] != 'none' && !empty($input['time']) ? $input['time'] : ''; $date_format = $element['#date_date_element'] != 'none' ? static::getHtml5DateFormat($element) : ''; $time_format = $element['#date_time_element'] != 'none' ? static::getHtml5TimeFormat($element) : ''; $timezone = !empty($element['#date_timezone']) ? $element['#date_timezone'] : NULL; // Seconds will be omitted in a post in case there's no entry. if (!empty($time_input) && strlen($time_input) == 5) { $time_input .= ':00'; } try { $date_time_format = trim($date_format . ' ' . $time_format); $date_time_input = trim($date_input . ' ' . $time_input); $date = DrupalDateTime::createFromFormat($date_time_format, $date_time_input, $timezone); } catch (\Exception $e) { $date = NULL; } $input = array( 'date' => $date_input, 'time' => $time_input, 'object' => $date, ); } else { $date = $element['#default_value']; if ($date instanceof DrupalDateTime && !$date->hasErrors()) { $input = array( 'date' => $date->format($element['#date_date_format']), 'time' => $date->format($element['#date_time_format']), 'object' => $date, ); } else { $input = array( 'date' => '', 'time' => '', 'object' => NULL, ); } } return $input; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Datetime!Element!Datetime.php/function/Datetime::valueCallback/8.1.x