0

次の関数を参照してください。

// Get date of retirement
public function getRetireYear()
{
    $this->retireYear = $this->getBirthDay()->add(new \DateInterval('P60Y'));
    return $this->retireYear;
}

// Get time left for retirement
public function getTimeToRetirement()
{
    // Date of today
    $today = new \DateTime('today');

    // Calculate date diff between today and retirement day.
    $this->timeToRetirement = $today->diff($this->retireYear);

    // Return the time to retirement time formated
    return $this->formatTimeInterval(
        $this->timeToRetirement,
        '%r%Y years, %m months, %d days'
    );
}

//Format the dateInterval numbers as string
public function formatTimeInterval($aDateDif, $format)
{
    return $aDateDif->format($format);
}

ここでデータベースに格納される唯一の値はで、従業員の退職年 (birthDay + 60 年) を生成します$this->getBirthDay()。誰かを退職させるために残された時間を与え、日付の間隔をフォーマットするために使用されます。getRetireYear
getTimeToRetirementformatTimeInterval($,$)

ここで、この dateInterval をさまざまな形式で使用できるようにする必要があります。たとえば、ビュー内の他の値と整数として比較するために年が必要な場合があるため、ビューでアクセスできるようにするために、今年は単一の値として必要です。

私はいくつかのことを試しましたが、それを行う正しい方法がわからないため、この問題についてより良い結論を得ることができませんでした.

また、年だけでなく、他のタスクのために月と日が必要になる場合もあります。コントローラーでは、オブジェクトの ArrayColletion を検索してビューに渡すだけなので、この値はビューでアクセスできる必要があります。配列コレクションをアップダウンします。

問題の詳細については、このスレッドを読むことができます

4

2 に答える 2

1

ワーカーよりも書式設定に関連しているため、メソッドが をgetTimeToRetirement返し、メソッドをエンティティから完全にDateInterval移動する方がよいと思います。その後、必要なときに必要に応じてフォーマットすることができます。それらの線に沿った何か。formatTimeIntervalDateIntervalDateInterval

ワーカー エンティティ クラスで:

// Get date of retirement
public function getRetireYear()
{
    $this->retireYear = $this->getBirthDay()->add(new \DateInterval('P60Y'));
    return $this->retireYear;
}

// Get time left for retirement
public function getTimeToRetirement()
{
    // Date of today
    $today = new \DateTime('today');

    // Calculate date diff between today and retirement day.
    $this->timeToRetirement = $today->diff($this->retireYear);

    // Return the time to retirement time as a DateInterval
    return $this->timeToRetirement;
}

dateその後、 Twig フィルターを使用DateIntervalして、ビュー内の をフォーマットできます。http://twig.sensiolabs.org/doc/filters/date.htmlを参照してください 。より具体的なものやカプセル化されたものが必要な場合は、そのための Twig 拡張機能を作成することもできます。http://symfony.com/doc/master/cookbook/templating/twig_extension.htmlを参照してください

于 2013-10-16T14:56:47.630 に答える