【簡単解説】システムエンジニア&プログラマー&心理カウンセラー

【ECCUBE4カスタマイズ】誕生日から年齢を算出するtwigの関数を追加する

2020.10.09

※この記事は上級者向きの記事です。
※この記事のカスタマイズはECCUBE4.0.2で実装確認したものです。

今回はEC-CUBE4で会員の誕生日を取得し、
レビューなどで年齢を表示するための関数を作成したお話です。
以下の通りに行えば超簡単です。

 

  • 関数を追加するファイルの場所
  • 設置する関数のサンプル
  • twigでの関数の利用方法

 

変更するファイルの場所

EC-CUBE4の場合、以下のPHPファイルの中へ関数を設置します。

/src/Eccube/Twig/Extension/IntlExtension.php

 

設置する関数のサンプル

設置する関数は以下の通り。
どこでも構いませんが、私は関数定義の一番下に設置しました。
そのままコピペでOK!

PHP

    /**
     * 誕生日文字列( 例: 1983-12-19)から現在の年齢を返します
     *
     * @param   string      $date_name (例: '1983-12-19')
     * @return  int         現在の年齢
     */
    public function getage( $date_name )
    {
        $birth = date('Ymd', strtotime($date_name));
        $now = date("Ymd");
        return floor(($now-$birth)/10000);
    }

またL30あたりのgetFilters()という関数内のreturnに以下を追加します。

PHP

new TwigFilter('getage', array($this, 'getage')) ,

 

twigでの関数の利用方法

Customerのbirth(日付型)に対して処理を行いたい場合は、上記で定義した「getage」という関数を使って以下のようにして年齢を取得します。

{{ Customer.birth|date(“Y-m-d”)|getage }}才

 
誕生日から年齢を算出するtwigの関数

twig関数を新しく定義することで
簡単に呼び出せて便利に利用することができます。

【twig備忘録】if文,for文,改行nl2br,文字配列split,setなど

 
最後までお読みいただきありがとうございます。

関連記事