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

今回はテンプレート上で変数の定義をやってみます。 smartyの性質上、本来はPHP側でやること推奨なのですが現場ではそうも言ってられません。 実際には、変数をテンプレート側で作成して対応していることも多いです。 単純に […]

今回はテンプレート上で変数の定義をやってみます。

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

Mishima

Mishima

Smarty3の情報ありがとうございます!記事内にも記載させていただきます。

Comments are closed.