我正在使用带有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'));
任何想法发生了什么?
答案 0 :(得分:2)
date
是一个内置的过滤器,你不需要注册它,尤其不能注册到无法处理DateTime对象的php date
函数。