1

我将 CI2 与 Doctrine2 和 Twig 一起用于模板引擎。我正在尝试将实体的日期显示为字符串,但它对我不起作用。

我将一组 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() 方法添加“日期”Twig 过滤器:

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

有什么想法吗?

4

1 回答 1

2

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

于 2012-05-29T07:16:10.200 回答