【问题标题】:Twig date filter not working with DateTime objectTwig 日期过滤器不适用于 DateTime 对象
【发布时间】:2012-06-03 06:27:42
【问题描述】:

我将 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'));

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 奇怪,我在注册日期过滤器之前尝试了几次,但都没有成功。现在,我已经删除了过滤器并且它正在工作。我会把它归结为睡眠不足 :) 谢谢,
    猜你喜欢
    • 2012-07-20
    • 2016-05-28
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多