2006年02月13日
表示の仕方もテンプレートで
繰り返しの行を表示する。表示項目が多くても意外と簡単に表示できる。この2とおりが出来れば、検索して結果を一覧で表示して、タイトルなりをクリックすると詳細な画面を表示するといった、基本的なWebプログラムは出来上がります。
もう1つテンプレートの素晴らしい機能として、表示の仕方もいろいろ設定ができます。
どういうことかと言うと、例えば、改行の扱い。textareaで改行付きの文章を入力し、それを表示する場合など、今まではPHPプログラムのほうで、改行コードを <br /> に置き換えていました。しかし、この処理もテンプレートで出来ます。
また、< や > のような文字もエスケープする必要があります。これもテンプレートで可能です。
その他にもいろいろあります。
Smartyのマニュアルでいうところの変数の修正子と呼ばれる機能です。
(前回書いた制御構造は、Smartyのマニュアルだと組み込み関数と呼ばれています)
こうやって、表示に関係する部分を出来るだけテンプレートに書くことで、PHPプログラムのほうは、なおいっそう、すっきりとしたコードになります。
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ
2006年02月11日
表(行)を表示するには?
しばらく、脱線ネタで日を稼いでましたが、続きです。
表示する項目が多い場合、連想配列を使うと便利です。というのは、前回の話で、今回は、表の行のような、繰り返し表示する方法です。
このような場合は、出力が何行になるか?は分かりません。データベースを読んで初めてわかるものです。なので、最初からテンプレートに
{$member.name1}
{$member.name2}
{$member.name3}
とは書けません。
テンプレートには、PHPプログラムからの値を表示するだけでなく、いわゆる制御構造をいうモノを持っています。
なんですか?それ?
| この記事へ | コメント (0) | トラックバック (1) | 先頭へ
2006年02月06日
表示するアイテムが多い場合
なるほど、表示したい値(変数)に対して $smarty->assign("…",$…); を繰り返せば表示できますが、普通、1つのページに山ほど表示する値はあります。
手前味噌で恐縮ですが、福井の不動産サイト(http://fukui.fudo-3.info/)の物件の詳細画面ともなると、所在地、沿線、賃料、敷金、礼金、うんぬんかんぬんと。
これ全部について、$smarty->assign("…",$…); をしないといけないのかと思うと、プログラマーはゾッとします。正直、そんなたくさん書くのは面倒。。。でも、これを言っちゃうとダメなので、プログラムの管理上どーのこーのとか、共通化出来んのか?とか言い始めます。バグ対策もあるので、ひとえに否定も出来ませんが、その半分以上は
こんなに書くの面倒じゃ!!
が率直な意見だと思います。現に私はそうです。どうも、プログラマーという人種は、楽をしたがります。
そこで、
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ
2006年02月04日
基本的な流れ
プログラムからの値を表示出来たので、流れを簡単に説明します。
マニュアルを熟読すれば、もっと効率良い使い方があるかも知れませんが、私は普段使っている内容しか書けないので、その範囲内ということで。
まず、PHPプログラムのほうですが、
index.php
<?require_once "libs/Smarty.class.php"; (1)
$name = "矢口真里"; (2)
$smarty = new Smarty; (3)
$smarty->clear_cache('index.html'); (4)
$smarty->assign("namae",$name); (5)
$smarty->display('index.html'); (6)
?>
| この記事へ | コメント (0) | トラックバック (0) | 先頭へ
2006年02月03日
プログラムからの値を表示してみる
サイトにアップして動かした時は、単に、テンプレートのHTMLをそのまま表示してただけでした。
では、データベースから取得した値を表示するとか、計算した結果を表示するとか、PHPのプログラムの結果の値を表示してみます。
テンプレートに名前を表示する箇所を追加します。
templates/index.html
<html>
<head>
<title>smarty test</title>
</head>
<body>
smarty テスト!!<br>
<br>
name[{$namae}]
</body>
</html>
{$namae}という記述を追加しました。実は、ここが、PHPプログラムからの値を表示する場所になります。
| この記事へ | コメント (4) | トラックバック (0) | 先頭へ



