如何在Twig中调用'time_diff'过滤器

问题描述 投票:0回答:5

如何在 Twig 中调用 'time_diff' 函数

代码

{{ post.created_at|time_diff }}

输出

The filter "time_diff" does not exist
php html symfony twig
5个回答
20
投票

如果您使用 Symfony 2,

并且想使用一些 原生树枝扩展

你必须将类似的服务声明为:

services:
    twig.extension.date:
       class: Twig_Extensions_Extension_Date
       tags:
            - { name: twig.extension }

3
投票

首先你需要:

composer require twig/extensions

然后您需要注册日期扩展:

$twig->addExtension(new Twig_Extensions_Extension_Date());

之后您可以使用 time_diff 过滤器。 全部在文档中


3
投票

我建议您使用KnpTimeBundle

因此您可以简单地与当前日期进行比较:

{# Returns something like "3 minutes ago" #}
{{ time_diff(myEntity.getMyTimeField) }}

与另一个日期比较:

{# Returns something like "3 minutes ago" #}
{{ time_diff(myEntity.getMyTimeField , to ) }}

默认启用翻译,只需查看翻译文件或根据需要添加即可。

希望这有帮助


1
投票

您添加了日期扩展吗?

在使用此格式之前添加以下行:

$twig->addExtension(new Twig_Extensions_Extension_Date());

0
投票

只需安装时间包,|ago 过滤器就会自动工作。

composer req knplabs/knp-time-bundle
{{ post.created_at|ago }}

更现代的方法是使用刺激https://www.stimulus-components.com/docs/stimulus-timeago

即使对于静态页面(例如 SPA),显示的时间也是准确的。

© www.soinside.com 2019 - 2024. All rights reserved.