如何使用twig,symfony2显示当月的年龄?

时间:2016-12-09 05:59:31

标签: php symfony date twig

我有一个项目,我希望在几个月内显示婴儿的当前年龄,还有一个代码可以计算并显示年龄,但我希望能在几个月内完成。这是mi代码。

<td>{% if entity.birthdate %}{{ ('now'|date('Y') - entity.birthdate|date('Y') - 1) + ('now'|date('Y-m-d')|date('U') - entity.birthdate|date('Y-m-d')|date('U') >= 0 ? 1 : 0) }}{% endif %}</td>

请问好吗?

1 个答案:

答案 0 :(得分:4)

虽然在模板/视图中计算值很有诱惑力,但最好将逻辑和表示分开。

我想,显示一个婴儿的年龄是你将来可能会再次想要的东西,所以让它成为entity上的方法(即 entity类的函数< / em>的)。

// entity.php
class person
{
    // Assumption: $birthdate is a DateTime object.
    protected $birthdate;

    // getAge() outputs something like this: '1 years, 1 months, 8 days old.'
    public function getAge()
    {
        $now = new \DateTime('now');
        $age = $this->getBirthdate();
        $difference = $now->diff($age);

        return $difference->format('%y years, %m months, %d days old.');
    }

    public function getBirthdate()
    {
        return $this->birthdate;
    }

    public function setBirthdate($birthdate)
    {
        $this->birthdate = $birthdate;
        return $this;
    }
}

然后在您的Twig文件中,您可以访问getAge方法:

{{ entity.age }}

因为我很有兴趣知道如何,你也可以在Twig中这样做;)

{{ date('now').diff((date('2014-1-3'))).format('%y years %m months %d days old') }}

Try it on twigFiddle