Comment supprimer ou masquer les secondes dans le sélecteur de temps Drupal 8?
Les widgets pour les champs d'horodatage, datetime et daterange sont les éléments d'entrée HTML5. Pour l'heure, le format de ceux-ci doit être "H: i: s", ce qui inclut les secondes. Par défaut, l'élément de formulaire utilise également les entrées HTML5 dans des utilisations personnalisées.
Pour les champs, vous devez modifier le widget pour modifier les champs "texte" de la clé "date_time_element" et mettre à jour la clé "#date_time_format" au format souhaité. Ensuite, vous devrez peut-être mettre à jour la valeur soumise pour définir les secondes sur 00, car je pense qu'elles seront par défaut à la valeur actuelle des secondes.
Pour les éléments de formulaire, utilisez simplement un élément 'text' pour '#date_time_element' et choisissez le format que vous souhaitez.
J'ai accompli cela en faisant ce qui est recommandé dans cet article .
Si votre module est glue.module
, procédez comme suit:
/**
* Implements hook_element_info_alter().
*/
function glue_element_info_alter(array &$types) {
$types['datetime']['#process'][] = 'glue_datetime_set_format';
}
/**
* Element process callback for datetime fields.
*/
function glue_datetime_set_format($element) {
// Remove seconds in browsers that support HTML5 type=date.
$element['time']['#attributes']['step'] = 60;
return $element;
}
J'ai supprimé les secondes du widget daterange en définissant l'attribut step dans hook_field_widget_WIDGET_TYPE_form_alter () sur 60 (secondes)
function my_module_field_widget_time_range_form_alter(&$element, FormStateInterface $form_state, $context) {
$element['value']['#attributes']['step'] = 60;
$element['end_value']['#attributes']['step'] = 60;
}
Pour les champs de formulaire, définissez l'attribut step sur 0.
function THEME_preprocess_input(&$variables) {
if ($variables['theme_hook_original'] == 'input__date' && $variables['attributes']['type'] == 'time') {
$variables['attributes']['step'] = 0;
}
}