概要
EC-CUBE4のTwigテンプレートでは準備されたヘルパー関数を使用することができます。
<a href="{{ url('mypage') }}">{{ 'ご注文履歴'|trans }}</a>
url('mypage')
は、url関数によってマイページのご注文履歴の画面のURLが表示されます。
url()
のようなTwigテンプレート内で使用できる関数は、独自の関数を作ることができます。
では、独自のヘルパー関数を追加して使用する例を以下に示します。
実装
Extension
を実装する
ファイル app/Customize/Twig/Extension/EccubeExtension.php
を新規作成します。
以下のプログラムを実装すると{{ test(引数1, 引数2) }}
のTwigヘルパー関数が使用できるようになります。
app/Customize/Twig/Extension/EccubeExtension.php
<?php
namespace Customize\Twig\Extension;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class EccubeExtension extends AbstractExtension
{
public function getFunctions()
{
return [
new TwigFunction('test', [$this, 'getTest']),
];
}
public function getTest($x, $y){
$result = $x * $y;
return "{$x} * {$y} = {$result}";
}
}
Twig内で独自関数を使用する
使いたい任意のテンプレート内に独自関数を記述していきます。
{{ test(100, 2) }}
をTOPページにおいてみましょう。
src/Eccube/Resource/template/default/index.twig
{% block main %}
{# 省略 #}
{{ test(100, 2) }}
{% endblock %}
100 * 2 = 200
という結果が表示されたと思います。
おわりに
本来、テンプレートに表示させる内容はコントローラーから渡してあげたものぐらいに抑えておくべきです。
テンプレートでは渡された値を表示されるだけにとどめていたほうが良いのですが、どうしてもテンプレート内で処理をさせないといけない等の場合にこの方法をお試しくださいませ。