Smartyで変数・配列を定義する(assign)



今回はテンプレート上で変数の定義をやってみます。
smartyの性質上、本来はPHP側でやること推奨なのですが現場ではそうも言ってられません。
結構ガリガリと変数を作成して対応していることも多いですね。
この辺りロジックとヴューという明確に分けて実行しているプロジェクトとかあるんでしょうか。
あるのなら羨ましい。
単純に変数定義といってもいろいろなケースがあると思います。くっつけたりとか。
現場で使用した例を幾つか紹介します。
注意:もしかしたらsmartyのプラグインを使用している可能性もありますのでそのまま使えないものもあるかもしれません。
↑調査不足ですみません。

Smartyで変数を定義する

{assign var="name" value="山田"}
{assign "name" "山田"}

単純にnameという変数を作る場合は上記で終わりです。二つ目の例は短縮形です。
変数も使用できます。変数が配列であっても大丈夫です。

{assign var="name" value=$user.name}

数値であれば計算もできます。

{assign var="total" value=$destroybonus+$score}

文字列と変数を連結する、変数と変数をくっつける

現場で意外と便利なのがこれ。文字列と変数をくっつけて変数をつくれます。
foreach文の中とかで複数変数を作りたい時とかに便利です。

{assign var='bonusImage' value="label`$bonusId`.png"}

くくり方に注意変数は`で囲みます。
シングルではなくてバッククオートです。MACだと「@」のキーのところにあります。
想像できると思いおますが、変数と変数は下記。

{assign var="nextButton" value="`$color``$length`"}

カウントする

{assign var=”count” value=0}
{$count=$count+1}

$count++ はエラーにはならないが計算されない。foreach文等で加算したい場合に。

参考:配列を定義する

これはsmartyのプラグインが必要です。おそらく。私の現場では設定されているんだと思います。
⇒参考http://d.hatena.ne.jp/studio-m/20070512/1178978926

{assign_array var="fruits" values="apple,banana,orange"}

valuesなのがミソですね。
ちなみに私の現場だとvalueで動いていたりします。なんでだろう。


Leave a comment