2

我有一个使用 symfony2 和 mongodb 列出产品的网站

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

为了这

在我的控制器中,我将数组 itemlist 传递给了 twig 模板。

我的树枝模板

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

在这里我没有得到 item.createdate

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

是否有任何树枝扩展?

4

4 回答 4

4
{{ sampleDate.sec|date('Ymd') }}
于 2015-11-11T11:44:01.683 回答
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

于 2013-11-05T15:55:17.793 回答
0

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

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

MongoDate::toDateTime

于 2017-04-05T10:25:45.757 回答
0

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

{{ event.begin.toDateTime()|date("d/m/Y H:i:s") }}
于 2019-05-30T09:36:21.457 回答