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(),
];
utiliser Drupal\Core\Datetime\DrupalDateTime;
et en forme
$form['start_date'] = array(
'#type' => 'datetime',
'#title' => t('Start Date'),
'#default_value' => DrupalDateTime::createFromTimestamp(time()),
);
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.
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.
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'))