datetime – Intentando renderizar un formato de fecha personalizado con Twig

Pregunta:

Estoy en el proceso de migrar uno de mis temas contrib a Drupal 8. Para formatos de fecha personalizados en nodos, tengo algo como esto en una función node_preprocess en el archivo template.php del tema en la versión Drupal 7:

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

Lo renderizo con el siguiente código.

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

En mi puerto de Drupal 8, probé un enfoque similar en el archivo .theme del tema y luego intenté representarlos en node.html.twig como {{{ thedate }} / {{ themonth }} / {{ theyear }}} , pero recibo un error desagradable.

Twig_Error_Runtime: Se ha lanzado una excepción durante la renderización de una plantilla ("La marca de tiempo debe ser numérica") en themes / mytheme / templates / page.html.twig en la línea 210. en Twig_Template-> displayWithErrorHandling () (línea 279 de /site/core/vendor/twig/twig/lib/Twig/Template.php).

Miré los formatos de fecha de Twig , y parece que simplemente debería adjuntar una variable, como {{ display_submitted |date("m/d/Y") }} . Intenté eso sin una función de preproceso, pero el resultado es 31/12/1969 , que no es la fecha en que se creó el nodo, así que estoy un poco perdido aquí.

Respuesta:

$node->created es un objeto FieldItemList .

Debe utilizar cualquiera de estos.

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

Todos los campos base de nodos (y la mayoría de los otros tipos de entidades, algunos aún se están trabajando) tienen métodos ahora, que están definidos en NodeInterface .

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım