web-dev-qa-db-fra.com

Comment afficher la dernière date enregistrée d'un nœud?

Drupal 8 affiche déjà la dernière date enregistrée sous forme d'édition de page. Je veux ajouter un champ à un nœud qui l'affiche à nouveau. J'utilise hook_form_alter() et je fais cela dans mon module, mais il affiche la date actuelle.

  if ($form_id == 'node_page_edit_form') {
    $form['field_message2'] = array(
      '#type' => 'item',
      '#title' => t('Changed date'),
      '#weight' => -1,
      '#markup' => format_date(time(), $created),
    );
  }

Comment afficher la dernière date enregistrée?

6
paulcap1

Voici le code dont vous avez besoin:

    if ($form_id == 'node_page_edit_form') {
    $form['field_message2'] = array(
      '#type' => 'item',
      '#title' => t('Changed date'),
      '#weight' => -1,
      '#markup' => format_date($form_state->getFormObject()->getEntity()->changed->value),
    );
  }

Vérifiez l'interface FormStateInterface pour voir dans les méthodes la méthode getFormObject () .

4

Les arguments que vous passez un format_date() sont faux: le deuxième argument est le format utilisé pour la date, pas un autre horodatage.

Vous devez coder de manière similaire à la suivante.

  if ($form_id == 'node_page_edit_form') {
    $node = $form_state->getFormObject()->getEntity();
    $form['field_message2'] = array(
      '#type' => 'item',
      '#title' => t('Changed date'),
      '#weight' => -1,
      '#markup' => format_date($node->getChangedTime(), 'medium'),
    );
  }

Encore mieux, vous devriez utiliser le service Drupal fournit des dates de formatage.

  if ($form_id == 'node_page_edit_form') {
    $node = $form_state->getFormObject()->getEntity();
    $form['field_message2'] = array(
      '#type' => 'item',
      '#title' => new \Drupal\Core\StringTranslation\TranslatableMarkup('Changed date'),
      '#weight' => -1,
      '#markup' => \Drupal::service('date.formatter')->format($node->getChangedTime(), 'medium'),
    );
  }

Au lieu de 'medium', vous pouvez utiliser la valeur par défaut ou une autre que vous préférez.

5
kiamlaluno