public static Datelist::valueCallback(&$element, $input, FormStateInterface $form_state)
Validates the date type to adjust 12 hour time and prevent invalid dates. If the date is valid, the date is set in the form.
Overrides FormElement::valueCallback
File
- core/lib/Drupal/Core/Datetime/Element/Datelist.php, line 46
Class
- Datelist
- Provides a datelist element.
Namespace
Drupal\Core\Datetime\Element
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | public static function valueCallback(& $element , $input , FormStateInterface $form_state ) { $parts = $element [ '#date_part_order' ]; $increment = $element [ '#date_increment' ]; $date = NULL; if ( $input !== FALSE) { $return = $input ; if ( empty ( static ::checkEmptyInputs( $input , $parts ))) { if (isset( $input [ 'ampm' ])) { if ( $input [ 'ampm' ] == 'pm' && $input [ 'hour' ] < 12) { $input [ 'hour' ] += 12; } elseif ( $input [ 'ampm' ] == 'am' && $input [ 'hour' ] == 12) { $input [ 'hour' ] -= 12; } unset( $input [ 'ampm' ]); } $timezone = ! empty ( $element [ '#date_timezone' ]) ? $element [ '#date_timezone' ] : NULL; try { $date = DrupalDateTime::createFromArray( $input , $timezone ); } catch (\Exception $e ) { $form_state ->setError( $element , t( 'Selected combination of day and month is not valid.' )); } if ( $date instanceof DrupalDateTime && ! $date ->hasErrors()) { static ::incrementRound( $date , $increment ); } } } else { $return = array_fill_keys( $parts , '' ); if (! empty ( $element [ '#default_value' ])) { $date = $element [ '#default_value' ]; if ( $date instanceof DrupalDateTime && ! $date ->hasErrors()) { static ::incrementRound( $date , $increment ); foreach ( $parts as $part ) { switch ( $part ) { case 'day' : $format = 'j' ; break ; case 'month' : $format = 'n' ; break ; case 'year' : $format = 'Y' ; break ; case 'hour' : $format = in_array( 'ampm' , $element [ '#date_part_order' ]) ? 'g' : 'G' ; break ; case 'minute' : $format = 'i' ; break ; case 'second' : $format = 's' ; break ; case 'ampm' : $format = 'a' ; break ; default : $format = '' ; } $return [ $part ] = $date ->format( $format ); } } } } $return [ 'object' ] = $date ; return $return ; } |
Please login to continue.