今回はテンプレート上で変数の定義をやってみます。
smarty
の性質上、本来はPHP側でやること推奨なのですが現場ではそうも言ってられません。
実際には、変数をテンプレート側で作成して対応していることも多いです。
単純に変数定義といってもいろいろなケースがあると思います。
現場で使用した例を幾つか紹介します。
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"}
変数の囲みに注意:変数は`
で囲みます。
シングルではなくてバッククオートです。
想像できると思いおますが、変数と変数は下記。
{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"}
2020.8.16追記
Smarty3だとプラグインを必要としないようです。情報提供いただきありがとうございます。
参考→Smartyで空の配列を宣言する方法
Smartyおすすめ書籍
Smartyは古い書籍しかなく、Kindle版しかありませんでしたが下記が入門におすすめです。
「Smarty 3を覚える本」
Smarty3では、↓の記事に記載されている通り、素のSmartyだけでテンプレ中で初期値を伴って配列の宣言が可能です。
https://colo-ri.jp/develop/2011/03/smarty-blank-array.html
Smarty3の情報ありがとうございます!記事内にも記載させていただきます。