今リアルに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) %}