我正在使用带有 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() 方法添加"日期"Twig 过滤器:
$this->twig->addFilter('date', Twig_Filter_Function('date'));
知道发生了什么吗?
date
是一个内置过滤器,你不需要注册它,尤其是不需要注册php date
函数,它不能处理DateTime对象。