Twig日期过滤器不使用DateTime对象

时间:2012-05-29 01:49:19

标签: php datetime doctrine-orm codeigniter-2 twig

我正在使用带有Doctrine2和Twig的CI2作为模板引擎。我试图将实体中的日期显示为字符串,但它对我不起作用。

我正在向模板发送一个Entity对象数组,迭代它们并显示它们的属性:

{% 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'));

任何想法发生了什么?

1 个答案:

答案 0 :(得分:2)

date是一个内置的过滤器,你不需要注册它,尤其不能注册到无法处理DateTime对象的php date函数。