web-dev-qa-db-ja.com

時間ピッカーの秒を削除

Drupal 8タイムピッカーで秒を削除または非表示にするにはどうすればよいですか?

2
Morten

タイムスタンプ、日時、日付範囲フィールドのウィジェットは、HTML5入力要素です。時間の場合、これらの形式は秒を含む「H:i:s」である必要があります。 form要素もデフォルトでHTML5入力を使用して、カスタムで使用します。

フィールドの場合は、ウィジェットのフォームを変更して「date_time_element」キーの「テキスト」フィールドを変更し、「#date_time_format」キーを目的の形式に更新する必要があります。次に、送信された値を更新して秒を00に設定する必要がある場合があります。これは、秒の現在の値がデフォルトになると私は考えているためです。

フォーム要素の場合は、「#date_time_element」に「text」要素を使用し、必要な形式を選択するだけです。

2
mpdonadio

私は この記事 で推奨されていることを行うことでこれを達成しました。

モジュールがglue.module、 これを行う:

/**
 * 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;
}
3
carsonw

Removing seconds from daterange widget

Hook_field_widget_WIDGET_TYPE_form_alter()のステップ属性を60(秒)に設定することにより、日付範囲ウィジェットから秒を削除しました

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;
}
2
Guest312312

フォームフィールドの場合、step属性を0に設定します。

function THEME_preprocess_input(&$variables) {
  if ($variables['theme_hook_original'] == 'input__date' && $variables['attributes']['type'] == 'time') {
        $variables['attributes']['step'] = 0;
    }
}
0
marco-s