1. ホーム
  2. php

[解決済み] Twig テンプレートで DateTime オブジェクトをレンダリングする方法

2022-04-18 15:06:38

質問

私のエンティティのフィールドの1つは、"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;

そして、私が受け取っているエラーメッセージは以下の通りです。

テンプレートのレンダリング中に例外が発生しました("Catchable Fatal Error: Object of class DateTime could not be converted to string in ...\appcachedevtwig9bad58fd3bb1517632badf1fdc7fa4a8.php line 33") in "BeerBundle:Games:gameTable.html.twig" at line 10.

どのように解決するのですか?

を使用することができますが

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

のアプローチでは、このバージョンはユーザーのロケールを尊重しないことに留意してください。これは、ある国籍のユーザーだけが使用するサイトでは問題ないはずです。国際的なユーザは、対局の日付をまったく別の方法で表示する必要があります。 \DateTime クラスを追加し、さらに __toString() メソッドでロケールをチェックし、それに応じて動作します。

編集 :

コメントで @Nic さんからご指摘いただいたように TwigのIntl拡張機能 を使用すると localizeddate フィルターが利用でき、ユーザーのロケールでの日付が表示されます。この方法によって、私が以前考えた \DateTime .