一尘不染

如何在Twig模板中呈现DateTime对象

php

我的一个实体中的一个字段是“ datetime”变量。

如何将该字段转换为字符串以在浏览器中呈现?

这是一个代码片段:

{% for game in games %}
    ...
        <td> {{game.gameTeamIdOne.teamName}} </td>
        <td> {{game.gameTeamIdTwo.teamName}} </td>
        <td> {{game.gameDate}}</td>
    </tr>
{% endfor %}

这是我的实体类中的变量:

/**
 * @var date $gameDate
 *
 * @ORM\Column(name="GAME_DATE", type="datetime", nullable=true)
 */
private $gameDate;

这是我收到的错误消息:

呈现模板期间引发了异常(“可捕获的致命错误:DateTime类的对象无法在… \ app \ cache \ dev \ twig \ 9b \
ad \ 58fd3bb1517632badf1fdc7fa4a8.php第33行中转换为字符串” )在第10行的“
BeerBundle:Games:gameTable.html.twig”中。


阅读 279

收藏
2020-05-29

共1个答案

一尘不染

虽然您可以使用

{{ game.gameDate|date('Y-m-d') }}

方法,请记住,此版本不支持用户区域设置,这对于仅由一个国籍的用户使用的网站来说应该不是问题。国际用户应该显示完全不同的游戏日期,例如扩展\DateTime类,并向其中添加一种__toString()检查语言环境并采取相应措施的方法。

编辑

正如@Nic在评论中指出的那样,如果您使用TwigIntl扩展名,则将有一个localizeddate可用的过滤器,该过滤器在用户的语言环境中显示日期。这样一来,您就可以放弃我以前扩展的想法\DateTime

2020-05-29