Smarty Tips
Smarty Tips
Smartyテンプレートへの CSS、JavaScript記述
{literal}
<style rtpe="text/css">
body {
background: #FFBBE8;
}
</style>
{/literal}
CSS記述やJavaScript記述は{literal}で囲まないと { 文字、} 文字がSmartyタグだと勘違いされてしまいます。
数字フォーマット
- 数字に3桁区切りなどの書式
例:123,456,789
{$outData|number_format}
- 数字に3桁区切りなどの書式(小数桁数2)
例:56,789.12
{$outData|number_format:2}
ヘッダテンプレートにタイトルの変数を渡す
テンプレートで「header.tpl」を使用。
「Hoge Page」という文字列をテンプレートに渡します。
{include file='header.tpl' title='Hoge Page'}
ヘッダテンプレートで $title を表示します。
<html>
<head>
<title>{$title|default:'FUGA PAGE'}</title>
</head>
<body>
……
※ setView で設定した値は、ヘッダテンプレートでも表示することが可能です。
繰り返し(foreach)
- 書式
{foreach from=[配列] key=[キー] item=[アイテム] name=[このループブロックの名前]}
// 処理
{foreachelse}
// 処理
{/foreach}
- サンプル
{foreach from=$data key="key" item="value" name="list"}
<li>{$key}:{$value}</li>
{/foreach}
{$key}は 0,1,2,3……
- 現在のループ回数($smarty.foreach.mainloop.iteration)
{foreach from=$outMaster key=key item=val name=mainloop}
<li>{$smarty.foreach.mainloop.iteration}</li>
{/foreach}
{$smarty.foreach.mainloop.iteration}は 1,2,3,4……
for文処理
- PHP(配列を表示)
for ($i=0; $i < count($data); $i++) {
echo "$i:$data[$i]";
}
- Smarty(配列を表示)
{section name="test" loop=$data}
{$smarty.section.test.iteration}:{$data[test]}
{/section}
- PHP(通常のループ)
for ($i=7; $i<10; $i++){
echo "$i;
}
- Smarty(通常のループ)
{section name="test" start=7 loop=10 step=1}
{$smarty.section.test.iteration}
{/section}
デフォルト表示文字
- 変数が存在しない場合、デフォルトの文字列を表示する
ようこそ{$userName|default:'ゲスト'}さん
- 管理画面等ではエラー表示部分に使えます
<div style="color:red;">{$errorMessage|default:''}</div>
sprintf 処理
変数の値を10進数として表示したり、文字列をフォーマットして表示します。
フォーマット文字列には sprintf() の構文を使用してください。
{$number|string_format:"%.2f"}
{$number|string_format:"%d"}
http://www.smarty.net/docsv2/ja/language.modifier.string.format.tpl
日時の表示
- dfwLib モジュール
setView('yesterday', strtotime('-1 day'));
- Smarty テンプレート
{$yesterday|date_format}
{$yesterday|date_format:"%A, %B %e, %Y"}
- 現在の日時表示(Smarty テンプレート)
{$smarty.now|date_format}
{$smarty.now|date_format:"%D"}
http://www.smarty.net/docsv2/ja/language.modifier.date.format.tpl
変数
- PHP
$data[0]
- Smarty
{$data.0}
- PHP
{$data['hoge']}
- Smarty
{$data.hoge}
- PHP
{$data['hoge']['fuga']}
- Smarty
{$data.hoge.fuga}
- PHP
$name = 'hoge';
$data[$name]
- Smarty
{$data.$name}
デバッグ表示
Smartyテンプレートに渡された情報を表示します。
{debug}