it-swarm.com.de

Versuch, ein benutzerdefiniertes Datumsformat mit Twig

Ich bin gerade dabei, eines meiner Contrib-Themen nach Drupal 8.) zu portieren. Für benutzerdefinierte Datumsformate auf Knoten habe ich so etwas in einer node_preprocess-Funktion in der template.php-Datei des Themas in die Drupal 7 Version:

$vars['thedate'] = format_date($node->created, "custom", "j");
$vars['themonth'] = format_date($node->created, "custom", "M");
$vars['theyear'] = format_date($node->created, "custom", "Y");

Ich rendere es mit dem folgenden Code.

  <?php print $thedate; ?> / <?php print $themonth; ?> / <?php print $theyear; ?>

In meinem Port Drupal 8) habe ich einen ähnlichen Ansatz in der .theme-Datei des Themas versucht und dann versucht, sie in node.html.twig Als {{{ thedate }} / {{ themonth }} / {{ theyear }}} Zu rendern, aber Ich bekomme einen bösen Fehler.

Twig_Error_Runtime: Beim Rendern einer Vorlage ("Der Zeitstempel muss numerisch sein.") In themen/mytheme/templates/page.html.twig in Zeile 210 wurde eine Ausnahme ausgelöst. In Twig_Template-> displayWithErrorHandling () (Zeile 279 von /site/core/vendor/twig/twig/lib/Twig/Template.php).

Ich habe nach Twig-Datumsformaten gesucht, und es scheint, dass Sie einfach eine Variable wie {{ display_submitted |date("m/d/Y") }} anhängen sollten. Ich habe das ohne Vorverarbeitungsfunktion versucht, aber was ausgegeben wird, ist 31.12.1969 , was nicht das Datum ist, an dem der Knoten erstellt wurde, also bin ich ein bisschen hier verloren.

5
Danny Englander

$node->created ist ein FieldItemList-Objekt .

Sie müssen eine dieser Optionen verwenden.

$vars['thedate'] = format_date($node->created->value, "custom", "j");
$vars['thedate'] = format_date($node->getCreatedTime(), "custom", "j");

Alle Knotenbasisfelder (und die meisten anderen Entitätstypen, an denen noch gearbeitet wird) verfügen jetzt über Methoden, die in NodeInterface definiert sind.

7
tim.plunkett

Hier ist ein Ansatz, der nur Twig (keine Vorverarbeitungsfunktionen erforderlich) verwendet:

<p>{{ node.createdtime | date("d F Y") }}</p>
12
wiifm

Fügen Sie der Datei YOURTHEMENAME.theme Folgendes hinzu, wenn Sie etwas mehr Hilfe benötigen, um dies zu verstehen:

/**
 * Implements template_preprocess_comment()
 */
function YOURTHEMENAME_preprocess_comment(&$variables) {
  $comment = $variables['elements']['#comment'];
  $variables['YOUR_DATE_NAME'] = format_date($comment->created->value, "custom", "m / j / y");
}

Aktualisieren Sie dann in Ihrem Thema die Vorlage twig (z. B. templates/comment.html.twig)), um die Variable wie folgt zu verwenden: {{ YOUR_DATE_NAME }}

1
jimafisk