Smartyテンプレートで空の配列を定義し、array_pushで要素を追加する方法
Smartyではテンプレート内で配列を作成する方法は知られていますが、後から配列に要素を追加するテクニックは意外と知られていません。
そこで今回はSmartyテンプレート内で空の配列を定義し、array_pushを使って後から要素を追加してみたいと思います。
Smarty3が普及していますが、Smarty2でも使えるテクニックです。
1.explode修飾子で空の配列を作成
まずは定番の空配列の作成。Smarty3ではデフォルトで「value=[]」として空配列が作れますが、Smarty2では使えないので以下の方法で作成します。
{assign var=myArray value=","|explode:""} {capture name="garbage"}{$myArray|@array_pop}{/capture}
ポイントは2行目。1行目で配列ができるのですが、空の文字列要素が1つ入ってしまうのでarray_pop修飾子で除去します。その際、返り値で空文字が出力されてしまうので{capture}修飾子で抑えます。
2.array_push修飾子を使う
続いてarray_push修飾子を使ってみます。
{capture name="garbage"}{$myArray|@array_push:"Apple"}{/capture} {capture name="garbage"}{$myArray|@array_push:"Orange"}{/capture} {capture name="garbage"}{$myArray|@array_push:"Grape"}{/capture}
これも最初の初期化と同じように{capture}タグで返り値の出力を抑えます。
お役に立てば幸いです。それでは!
2012-10-18