如何在symfony2 twig模板中显示mongodb日期?

时间:2013-11-05 10:18:39

标签: mongodb symfony twig

我有一个网站列出了使用symfony2和mongodb

的产品

我使用创建日期将项目添加到mongodb中,并且需要在我的树枝模板中显示所有项目。

对于此

在我的控制器中,我将数组项目列表传递给了twig模板。

我的树枝模板

{% for item in itemlist %}
<h4>{{item.name}}</h4>
<p>{{item.name}}</p>
{{item.createdate}}
{% endfor %}

这里我没有收到item.createdate

如何在树枝模板中直接显示mongo日期?

这是否有任何树枝延伸?

4 个答案:

答案 0 :(得分:3)

{{ sampleDate.sec|date('Y-m-d') }} 

答案 1 :(得分:1)

这是一个可能适合你的扩展类:

class MongoDateExtension extends \Twig_Extension
{
    /**
     * @inheritdoc
     */
    public function getName()
    {
        return 'mongoDate_extension';
    }

    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('convertMongoDate', array($this, 'convertMongoDateFilter')),
        );
    }

    public function convertMongoDateFilter(\MongoDate $mongoDate)
    {
        return new \DateTime('@' . $mongoDate->sec);
    }
}

然后通过将以下代码段添加到services.xml,将类注册到依赖项注入容器。请考虑您必须在示例中调整类路径。

<service id="twig.extension.mongo_date"
         class="Path\To\Your\Bundle\Twig\Extension\MongoDateExtension">
    <tag name="twig.extension"/>
</service>

扩展程序会将mongo日期转换为php \ DateTime对象。它将以秒的精度执行转换,因此如果您还需要微秒,则需要调整扩展名。

最后在你的树枝模板中,你可以使用树枝日期格式扩展名:

{{ sampleDate|convertMongoDate|date('Y-m-d') }} 

将打印 2013-11-05

答案 2 :(得分:0)

我使用时遇到了时区问题。 相反,我使用了 toDateTime ,效果很好。

{{ sampleDate.toDateTime|date('Y-m-d') }} 

MongoDate::toDateTime

答案 3 :(得分:0)

我发现的最简单的方法是:

{{ event.begin.toDateTime()|date("d/m/Y H:i:s") }}