web-dev-qa-db-fra.com

Comment définir la valeur par défaut d'un élément de formulaire datetime?

J'ai une exigence de développer un formulaire de contact personnalisé en drupal 8. Je suis capable d'ajouter tous les champs mais le champ d'heure à venir ne peut pas définir la valeur par défaut à la date actuelle.

Ceci est mon code de champ de date

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

utiliser Drupal\Core\Datetime\DrupalDateTime;

et en forme

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

L'élément de champ #default_value Datetime attend un objet DrupalDateTime , pas une chaîne de date.

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'),
     ];

Pour plus d'informations, voir Datetime::processDatetime() & Datetime dans la documentation de l'API.

4
Shawn Conn

Utiliser également Drupal 8. Ce discussion soulève un point important - assurez-vous que votre format de date correspond.

Je voulais afficher la date en d/m/Y mais ce n'est pas le format par défaut utilisé par le champ de date:

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

L'indice était dans le HTML généré:

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

La discussion indique que la valeur par défaut pourrait être modifiée, mais je n'ai pas validé cette proposition.

0
B5A7

Pour Drupal 8, le morceau de code suivant fonctionne:

// Élément de formulaire à l'intérieur de buildForm ().

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

// À l'intérieur de submitForm ().

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