it-swarm.com.de

Wie lege ich den Standardwert eines datetime-Formularelements fest?

Ich muss ein benutzerdefiniertes Kontaktformular in drupal 8.) entwickeln. Ich kann alle Felder hinzufügen, aber das Feld für das aktuelle Datum kann den Standardwert nicht auf das aktuelle Datum setzen.

Dies ist mein Datumsfeldcode

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

verwenden Sie Drupal\Core\Datetime\DrupalDateTime.

und in Form

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

Das Feldelement #default_value Datetime erwartet ein DrupalDateTime Objekt, keine Datumszeichenfolge.

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

Weitere Informationen finden Sie in den API-Dokumenten unter Datetime::processDatetime() & Datetime .

4
Shawn Conn

Verwenden Sie auch Drupal 8. Dies Diskussion wirft einen wichtigen Punkt auf - stellen Sie sicher, dass Ihr Datumsformat übereinstimmt.

Ich wollte das Datum als d/m/Y anzeigen, aber das ist nicht das Standardformat, das vom Datumsfeld verwendet wird:

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

Der Hinweis war im generierten HTML:

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

Die Diskussion besagt, dass der Standard geändert werden könnte, aber ich habe diesen Vorschlag nicht validiert.

0
B5A7

Für Drupal 8) funktioniert der folgende Code:

// Element in buildForm () bilden.

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

// Innerhalb von submitForm ().

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