2006年02月22日

default:空文字の場合の表示の指定

表示する内容が空文字の場合はよくあります。任意登録の項目は往々にして何も入力しない場合が多いです。
その場合、それをそのまま出すと、表示的によろしくない場合があります。
また、未登録の場合は「未登録」と明示的に表示したい場合もあります。

今までは、これらの処理はPHPでやってました。

if ($mail == "")
    $dispmail = "<メールアドレスは登録されていません>";
else
    $dispmail = $mail;

今までの話だと、Smartyで表示する場合も同じようなものです。

ここで使うのが default です。

空文字の場合どうするかは、テンプレート側でやっちゃいます。

なので、PHPのほうは、そんなことは何も意識せずに

$smarty = new Smarty;
$smarty->assign("mail",$mail);
$smarty->display('index.html')

と $mail をそのままテンプレートに渡します。PHPコードがまたすっきり!

テンプレートでは

<table>
<tr>
<td>メールアドレス</td>
<td>{$mail|default:"<メールアドレスは登録されていません>"}</td>
</tr>
</table>

と書きます。
表示する変数を修正子(default のこと)は、| (パイプ)でつなぎます。
defaultの後ろに、; (セミコロン)をつけ、{$mail}が空文字だった時の表示する文字を書きます。この中に、HTMLのタグを書くことも可能です。

PHPのほうは、値をテンプレートに渡すだけなので、表示のための編集作業も要らないし、編集した値を保持するための余計な変数も要りません。すっきりです(何度言ったことか…)
テンプレートのほうは、いちいちPHPを見なくても、空文字の場合はこう出るんだ!とすぐに確認できるし、変更も楽にできます。

2006年02月22日 11:10 |  4.変数の修正子


トラックバック

このエントリーのトラックバックURL:

コメント

コメントしてください




保存しますか?