2011年10月7日金曜日

smartyテンプレートで配列の文字列に変数を指定する

PHPはフレームワークがすっかり定着していますが、smartyもまだまだ捨てたもんじゃありません。
元々テンプレート的に使えるPHPなので、smartyは本末転倒だとか言われてますけどね・・。
でもフレームワークは規約に縛られてやりにくい場合もあったので、自分なりに作れるsmartyは使いやすいです。
smartyを使う場合は、一貫して「自分規約」を貫かないと面倒なことになるのかな。

さて前置きはこの程度で本題...

smartyのテンプレート内で配列を使った際に、連想配列のハッシュキーを

{$array.$hash1_$hash2}

みたいな感じでアンダースコアで2つの変数を繋げたい場合がありました。

そのまま書いてみるとエラーで画面が表示されません。

そこで色々やってみた結果、繋げたいハッシュキーをassignでcatするという方法にたどり着きました。

{assign var='hash' value=$hash1|cat:'_':$hash2}
{$array.$hash}

こうするとちゃんとハッシュキーとして認識されました。

cat関数はsmartyテンプレート内で文字列を繋げる時に使う関数で、 何個も繋げる時は $var1|cat:$var2:var3:var4 という感じでいけるようです。

今回は(_)アンダースコアと$hash2を$hash1に繋げただけなので、 $hash1|cat:'_':$hash2 となっています。

面倒といえば面倒だけど、やってしまえばそれまでです。

0 件のコメント:

コメントを投稿