[ECCUBE4] TwigにPHP関数を追加。もちろん本体ソースは触らずに

今リアルにECCUBE4案件が動き出しているのでECCUBE4関係のメモが続きます
今日はTwigに関数を追加する方法です

Twigはテンプレートエンジンですので、その中でデータ処理を行うようなものではありません
ありません・・・が、ほんとにちょっとした処理ぐらいならTwig上でやってしまったほうがわかりやすくなることがあるのも事実

今回は、配列の中で、指定した値を持つ要素の、そのキーが知りたい、という場面が発生しました
PHPならarray_searchを使う場面です
Twigではin_array(指定した値を持つ要素があるかないか判断)的な処理はできるものの、そのキーを返すものは用意されてないようなので、独自でarray_searchに相当するヘルパー関数を追加したい – それもECCUBE4本体のファイルを編集することなく

検索すると先達が方法を投稿してくれていました

[EC-CUBE4] Twig内で使用できる独自のヘルパー関数を追加する方法

こちらの解説ではオリジナルな関数を作っていますが、今回はPHPのarray_searchをそのまんま使えばいいので、もっとシンプルになりました
下記ではarray_searchに加えてついでにarray_flipも加えてます

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('array_search', 'array_search'),
            new TwigFunction('array_flip', 'array_flip'),
        ];
    }
}

使い方はPHPそのまんまです

{% array_search(needle , some_array) %}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です