1

テンプレートエンジンにDoctrine2とTwigを備えたCI2を使用しています。エンティティからの日付を文字列として表示しようとしていますが、機能しません。

エンティティオブジェクトの配列をテンプレートに送信し、それらを反復処理して、それらのプロパティを表示しています。

{% for e in entities %}
    <span><label>username</label>{{e.getUserName}}</span>
    <span><label>email</label>{{e.getEmail}}</span>
    <span><label>date created</label>{{e.getCreatedAt | date('d.M.Y H:i:s')}}</span>
{% endfor %}

このgetCreatedAt()メソッドは、DateTimeオブジェクトを返します。このオブジェクトは、PHP内から問題なく使用できます。

echo $e->getCreatedAt->format('YmdHis');

しかし、Twigの中からは、文字列を印刷する方法が見つからないようです。上記の方法を試してみると(私が読んだのは正しい方法です)、次のようになります。

date() expects parameter 1 to be string, object given

私は他のいくつかの方法を試しました:

{{e.getCreatedAt.format('d.M.Y H:i:s')}}
{{e.getCreatedAt}}
{{e.getCreatedAt | date('d.M.Y H:i:s') |strtotime}}

何もうまくいきません。

addFilter()メソッドを使用して「date」Twigフィルターを追加することは確実でした。

$this->twig->addFilter('date', Twig_Filter_Function('date'));

何が起こっているのかアイデアはありますか?

4

1 に答える 1

2

datedateは組み込みのフィルターであるため、特にDateTimeオブジェクトを処理できないphp関数に登録する必要はありません。

于 2012-05-29T07:16:10.200 に答える