web-dev-qa-db-ja.com

日時フォーム要素のデフォルト値を設定するにはどうすればよいですか?

drupal 8.でカスタム連絡先フォームを開発する必要があります。すべてのフィールドを追加できますが、日付と時刻のフィールドに来て、デフォルト値を現在の日付に設定できません。

これは私の日付フィールドコードです

$form['start_date'] = [
  '#type' => 'datetime',
  '#title' => t('Start Date'),
  '#description' => date($date_format, time()),
  '#default_value' => time(),
];
5
Sri Harsha

drupal\Core\Datetime\DrupalDateTimeを使用します。

そして形で

$form['start_date'] = array(
  '#type' => 'datetime',
  '#title' => t('Start Date'),
  '#default_value' => DrupalDateTime::createFromTimestamp(time()),
);
21
Ajay Reddy

_#default_value_ datetimeフィールド要素には、日付文字列ではなく DrupalDateTime オブジェクトが必要です。

_use Drupal\Core\Datetime\DrupalDateTime;

$form['start_date'] = [
       '#type' => 'datetime',
       '#title' => t('Start Date'),
       '#description' => date($date_format, time()),
       '#default_value' => new DrupalDateTime('1978-11-01 10:30:00', 'Europe/Berlin'),
     ];
_

詳細については、APIドキュメントの Datetime::processDatetime()Datetime を参照してください。

4
Shawn Conn

Drupal 8.も使用します。この ディスカッション は重要なポイントを提起します-日付形式が一致していることを確認してください。

日付をd/m/Yとして表示したかったのですが、日付フィールドで使用されるデフォルトの形式ではありません。

$today = date("Y-m-d");
$form['general']['endDate'] = ['#type' => 'date','#date_format' => 'd/m/Y','#title' => t('End date'),'#default_value' => $today,];

手がかりは生成されたHTMLにありました:

data-drupal-date-format="Y-m-d"

ディスカッションではデフォルトを変更できると述べられていますが、私はその命題を検証しませんでした。

0
B5A7

Drupal 8の場合、次のコードが機能します。

// buildForm()内のフォーム要素。

$form['start_date'] = [
      '#type' => 'datetime',
      '#title' => t('Start Date'),
      '#default_value' => DrupalDateTime::createFromTimestamp(strtotime($config->get('start_date')))
    ];

// submitForm()の内部。

->set('start_date', (string) $form_state->getValue('start_date'))
0