MW211 EXIT

devlog
Smarty/入門
2011年12月21日
Smarty導入方法はざっとこんな感じ。

Smarty一式を公式サイトからダウンロードし、所定(任意)の位置に置き、
Smartyを使用するPHPプログラムから「Smarty.class.php」をアサインする。
┌──────────────────────────────────────┐
│require_once '…/Smarty/Smarty.class.php';                                  │
└──────────────────────────────────────┘
後は、「new Smarty」でオブジェクトをつくり、assignメソッドで値を設定し
displayメソッドでテンプレートを呼び出すと表示される。
┌──────────────────────────────────────┐
│$smarty = new Smarty;                                                       │
│$smarty->assign('変数', 値);                                                │
│$smarty->display('テンプレート.tpl');                                       │
└──────────────────────────────────────┘

テンプレートは、通常のHTMLと同じで、「{$変数}」のように指定すると
assignメソッドで設定された値が表示される
┌──────────────────────────────────────┐
│$smarty->assign('変数', '織田信長');                                        │
├──────────────────────────────────────┤
│あなたの名前は「{$変数}」です。                                             │
└──────────────────────────────────────┘
変数について、assignでは$がいらず、テンプレートにはいる違い注意。
また、「{}」の中にSmartyの処理(例えばif文)を書くことにより様々な制御ができる。
なので、テンプレート上にJavaScriptで「function() {処理;}」みたいに
中括弧を一列に並べて書くとSmartyと誤認されエラーとなるので注意。

最後にテンプレートの置き場所だが、以下のような感じでdisplayの前に指定する。
┌──────────────────────────────────────┐
│$smarty->template_dir = '…/templates/';                                    │
│$smarty->compile_dir  = '…/templates_c/';                                  │
│$smarty->config_dir   = '…/configs/';                                      │
│$smarty->cache_dir    = '…/cache/';                                        │
└──────────────────────────────────────┘
「templates」にはテンプレートを置く。
「templates_c」にはSmartyが一時バイナリデータを出力する。
空っぽの場所さえ提供すればいい。
「configs」「cache」も似たようなもんなのだろうか、よくわからない。
ま、上記4つのフォルダを生成して、「templates」にテンプレートを置けばいい
ということだけわかっていればまずはOK。
分類:Smarty
Smarty/ループ文
2011年12月18日
「1~10」の値をSmartyだけで出力する方法。
┌──────────────────────────────────────┐
│{section name=cnt start=1 loop=11}                                          │
│{$smarty.section.cnt.index}<br/>                                            │
│{/section}                                                                  │
└──────────────────────────────────────┘
「for ($i = 1; $i < 11; $i++) {~」みたいなイメージだ。

ちなみにゼロパディングして「01~10」を出力する場合は、こう。
┌──────────────────────────────────────┐
│{section name=cnt start=1 loop=11}                                          │
│{$smarty.section.cnt.index|string_format:'%02d'}<br/>                       │
│{/section}                                                                  │
└──────────────────────────────────────┘
「printf(%02d, $i)」って感じかな。
分類:Smarty
Smarty/プルダウンメニュー
2011年09月09日
Smartyでプルダウンメニューを作成する例。

テンプレート側で以下のような感じで定義しておく。
┌──────────────────────────────────────┐
│<select name="pulldown">                                                    │
│<option value="">&nbsp;</option>                                            │
│{foreach from=$choices key=key item=value}                                  │
│<option value="{$key|escape}"
  {if $key == $default} selected="selected"{/if}>{$value|escape}</option>     │
│{/foreach}                                                                  │
│</select>                                                                   │
└──────────────────────────────────────┘

選択肢を以下のような連想配列として、Smartyにassignする。
┌──────────────────────────────────────┐
│$choices = array(                                                           │
│  1 => '北海道',                                                            │
│  2 => '青森県',                                                            │
│  3 => '岩手県'                                                             │
│);                                                                          │
└──────────────────────────────────────┘

初期表示値をSmartyにassignする。
#選択して(更新などを経て)再表示された場合などを想定
┌──────────────────────────────────────┐
│$default = 2;                                                               │
└──────────────────────────────────────┘

すると以下のようなイメージのプルダウンメニューが作成される。
┌──────────────────────────────────────┐
│          ┌───┐                                                        │
│          │      │→値は''                                                │
│          │北海道│→値は'1'                                               │
│初期表示→│青森県│→値は'2'                                               │
│          │岩手県│→値は'3'                                               │
│          └───┘                                                        │
└──────────────────────────────────────┘

ソースコードは以下のようになっている。
┌──────────────────────────────────────┐
│<select name="pulldown">                                                    │
│<option value="">&nbsp;</option>                                            │
│<option value="1">北海道</option>                                           │
│<option value="2" selected="selected">青森県</option>                       │
│<option value="3">岩手県</option>                                           │
│</select>                                                                   │
└──────────────────────────────────────┘
分類:Smarty
Smarty/連想配列に値がない場合の処理分岐
2011年08月31日
Smartyに指定された連想配列(ここでは$data)に値がない場合に
全体を非表示とする例は以下の通り。
┌──────────────────────────────────────┐
│{if ($data|@count) > 0}                                                     │
│見出表示用タグ                                                              │
│{foreach from=$data key=k item=i}                                           │
│明細表示用タグ                                                              │
│{/foreach}                                                                  │
│{/if}                                                                       │
└──────────────────────────────────────┘

以下もOK。
┌──────────────────────────────────────┐
│{if $data}                                                                  │
│見出表示用タグ                                                              │
│{foreach from=$data key=k item=i}                                           │
│明細表示用タグ                                                              │
│{/foreach}                                                                  │
│{/if}                                                                       │
└──────────────────────────────────────┘
分類:Smarty
前へ 1 2 3 次へ