2006年05月16日
プラグインはとても便利
カンマ編集のみならず、プラグインはとてもl便利です。
値はこうだけど、画面上はこう出したい!
って時は、プラグインがおすすめです。
例えば、データとして、1は男、2は女だった場合、次のようなプラグインを作っておけばいいわけです。
function smarty_modifier_sex($sex)
{
if ($sex == 1) return "男";
if ($sex == 2) return "女";
return "";
}
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ
カンマ編集プラグインの作り方
では、実際に作ってみましょう。
テンプレートの中では
{$price|kanma}
と使うことにしましょう。作る修正子の名前は「kannma」です。
まず、ファイル名ですが、
modifier.修正子の名前.php
になります。なので、今回の場合は、modifier.kanma.php です。
次に関数名ですが、
smarty_modifier_修正子名
になります。なので、今回は、smarty_modifier_kanma です。
この関数の中で、値をもらって、カンマ編集して返してあげればいいわけで
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ
カンマ編集って面倒じゃない?(プラグインのススメ)
すっかり更新が止まってました。はよ書け!と、突っ込みまで頂きました(汗)。
金額などはよく、カンマ編集して表示します。カンマ編集自体は、PHPの number_format 関数を使えばなんてことないんですが、カンマ編集した値は計算には使えないので、表示用に、カンマ編集した値も別途必要になります。
1つの値に2つの変数が要るわけで、変数名をどうするか?例えば、$price と $price_str にしようかとか。。。
これを考えるだけでも、メンドイ。プログラムの関数の中で、引数で2つ渡すべきか、それぞれの関数の中で編集するかとか。。。。あぁ~、メンドイ。
と、Smartyの修正子を見ても、あってもよさそうなカンマ編集がない。
こんなときは、
"カンマ編集って面倒じゃない?(プラグインのススメ)"の続きを読む
| この記事へ | コメント (2) | トラックバック (0) | 先頭へ
2006年03月23日
修正子を連結して使う
修正子はそれ単体でも使えます(当然です)が、通常は複数の修正子を使います。
例えば、input タグで入力された内容を、確認画面でそのまま表示する場合、エスケープしないといけない文字(<、> など)が入力されることもあります。
この場合、入力された文字をそのまま表示するには、escape が必要です。しかも、未入力の場合は「*未入力」と表示したい場合には、default も使います。
このような場合は、次のように書きます。
{$str|escape|default:"*未入力"}
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ
2006年03月08日
nl2br:改行文字を <br />に変換
textareaで複数行入力すると、必ずと言っていいほど「改行」されます。これをこのまま表示しても改行されません。HTMLの改行は <br /> なので、HTML上で改行させるには、これに変換しないといけません。
PHPには便利な関数があって、nl2br() を使って、改行文字を <br /> に変換できます。通常はこれを使って表示すればいいのですが、まったく同じ機能がSmartyにもあります。それが、 nl2br です。
{$str|nl2br}
で、勝手に改行してくれます。
| この記事へ | コメント (1) | トラックバック (0) | 先頭へ
2006年03月03日
escape:<や>をそのまま表示
< や > を表示しようとする時は、< や > とわざわざ変換してやらないといけないんですが、escapeを使うと、その変換をしてくれます。
$str = "<b>太字</b>";
$smarty = new Smarty;
$smarty->assign("str",$str);
$smarty->display('index.html')
とPHPでは、値をそのまま渡して、テンプレートのほうで
{$str|escape}
と書けば、出力結果は
<b>太字</b>
となります。この種の変換はいちいち面倒なので、かなり重宝します。
escapeしなければ、<b> はそのままタグとして、太字 と表示されます。
| この記事へ | コメント (0) | トラックバック (1) | 先頭へ
2006年02月22日
default:空文字の場合の表示の指定
表示する内容が空文字の場合はよくあります。任意登録の項目は往々にして何も入力しない場合が多いです。
その場合、それをそのまま出すと、表示的によろしくない場合があります。
また、未登録の場合は「未登録」と明示的に表示したい場合もあります。
今までは、これらの処理はPHPでやってました。
if ($mail == "")
$dispmail = "<メールアドレスは登録されていません>";
else
$dispmail = $mail;
今までの話だと、Smartyで表示する場合も同じようなものです。
ここで使うのが default です。
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ
2006年02月21日
表示に関する部分は出来るだけテンプレートで
テンプレートでPHPからの値を表示するには {$name} と書きます。また、連想配列で値を渡す場合は {$member.name} のように書きます。
テンプレートの便利なところは、この変数に、修正子と呼ばれる、修飾語みたいなものが書けます。つまり、この修正子を使えば、今まで、PHPプログラムのほうで、出力のための編集を、テンプレート側で行うことが出来ます。
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ



