PHPライブラリ dfwLib

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}