You are here

function template_preprocess_datetime_form in Drupal 9

Same name and namespace in other branches
  1. 8 core/includes/theme.inc \template_preprocess_datetime_form()

Prepares variables for datetime form element templates.

The datetime form element serves as a wrapper around the date element type, which creates a date and a time component for a date.

Default template: datetime-form.html.twig.

Parameters

array $variables: An associative array containing:

  • element: An associative array containing the properties of the element. Properties used: #title, #value, #options, #description, #required, #attributes.

See also

form_process_datetime()

File

core/includes/theme.inc, line 555
The theme system, which controls the output of Drupal.

Code

function template_preprocess_datetime_form(&$variables) {
  $element = $variables['element'];
  $variables['attributes'] = [];
  if (isset($element['#id'])) {
    $variables['attributes']['id'] = $element['#id'];
  }
  if (!empty($element['#attributes']['class'])) {
    $variables['attributes']['class'] = (array) $element['#attributes']['class'];
  }
  $variables['content'] = $element;

  // Add instructional text describing the required date and time formats.
  // This will be hidden on JavaScript-enabled browsers that have a native
  // datepicker.
  if (!empty($element['#date_date_format'])) {
    $placeholder_date = 'YYYY-MM-DD';
    $variables['attributes']['data-drupal-field-elements'] = 'date' . ($element['#date_time_element'] === 'none' ? '' : '-time');
    $date_format = is_array($element['#date_date_format']) ? $element['#date_date_format'][0] : date($element['#date_date_format']);
    $variables['content']['date']['#attributes']['placeholder'] = $placeholder_date;
    $help_date = t('Enter the date using the format @placeholder_date (e.g., @date_format).', [
      '@date_format' => $date_format,
      '@placeholder_date' => $placeholder_date,
    ]);
    $variables['content']['date']['#attributes']['data-help'] = $help_date;

    // Include time formatting instructions when a time input is present.
    if (!empty($element['#date_time_format'])) {
      $placeholder_time = 'hh:mm:ss';
      $time_format = is_array($element['#date_time_format']) ? $element['#date_time_format'][0] : date($element['#date_time_format']);
      $variables['content']['time']['#attributes']['placeholder'] = $placeholder_time;
      $help_time = t('Enter the time using the format @placeholder_time (e.g., @time_format).', [
        '@time_format' => $time_format,
        '@placeholder_time' => $placeholder_time,
      ]);
      $variables['content']['time']['#attributes']['data-help'] = $help_time;
    }
  }
}