No.1ベストアンサー
- 回答日時:
WEBアプリ(ホームページ等)を作るときに、画面を表示してくれるテンプレート(ひな形)のようなものです。
PHP、あるいはPerlでもそうなのですが、これらでWEBアプリを書いたときに、画面の表示と、データを処理する部分とが入り乱れて非常に見にくい内容になります。スマーティ(Smarty)は、画面の表示部分だけをPHPとは別のスクリプト(つまり、これがSmartyなわけですが)で書いておいて、PHPからはデータだけを渡してもらうようにしたものです。たとえば……普通に書くとこんな感じです。
//---で挟んだ部分が画面表示の処理で、それ以外がデータの処理になっています。
:
$thereisheader=true;
//------------------------------------------------------------------------------
print <<"EOM";
<br><div align="center">
<h3>- 以下の内容でよろしければ送信ボタンを押して下さい -</h3>
<form action="http://xxx.xxx.xx/yyy/formhandle.php" method="POST">
<input type=hidden name=mode value=send>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 width="80%" BORDER=0><TR>
<TD BGCOLOR="$tbl_col1">
<table border=0 cellspacing=1 cellpadding=5 width="100%">
EOM
//------------------------------------------------------------------------------
$bef='';
$morder=false;
$orderlist=array();
:
:
これが……こんな感じになります。
:
$thereisheader=true;
$smty=new Smarty;
// Smartyにデータを引き渡す
$smty->assign("msg1","- 以下の内容でよろしければ送信ボタンを押して下さい -");
$smty->assign("script","http://xxx.xxx.xx/yyy/formhandle.php");
$smty->assign("tbl_col1","red");
// テンプレートファイルform1.tplに、フォームの定義が書かれている。表示指示
$smty->display("form1.tpl");
//
$bef='';
$morder=false;
$orderlist=array();
:
form1.tplの内容が以下のようになっていて、PHPから渡されたmsg1とscript、tbl_col1というデータの内容が、{$msg1}と{$script}、{$tbl_col1}の位置にはめ込まれて表示されます。PHPのソースと、Smartyのテンプレートファイルを分けることができるので、PHPの内容が非常に読みやすくなるという利点があります。
<br><div align="center">
<h3>{$msg1}</h3>
<form action="{$script}" method="POST">
<input type=hidden name=mode value=send>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 width="80%" BORDER=0><TR>
<TD BGCOLOR="{$tbl_col1}">
<table border=0 cellspacing=1 cellpadding=5 width="100%">
実際にPHPとSmartyでWEBアプリを作っていますが、PerlだけでWEBアプリを作っていたときに比べると驚くほど楽に作ることができるようになっています。
No.2
- 回答日時:
No.1さんが書かれているとおり、PHPでのロジック(処理)の箇所とView(表示)の箇所を分離させて、ソースを見やすくするテンプレートエンジンです。
ロジックとViewが同一ファイル内に書かれていると、あとで見直したり修正するときに結構見づらかったりします。
そこでSmartyを使いロジックはロジック、ViewはViewという風に分離させます。
またSmartyには、いろんな便利な関数や修飾子などが容易されており、View(Smarty)内でも多少の処理が書けるようになっています。
ただ、本当にロジックとViewの分離という意味では、Smarty内での処理はあまりオススメできません。また、パフォーマンスを求めるのであれば、それもまたあまりオススメできません。
詳しくはURLを参照してください。
http://smarty.php.net/manual/ja/
参考URL:http://smarty.php.net/manual/ja/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】検索したデータを...
-
ログイン画面から入って、「戻...
-
POSTで受け渡したものを保存し...
-
HTMLエスケープすべき場所につ...
-
HTMLエスケープ処理とデーター...
-
asp.netでのセッションを使用し...
-
フォームを使わずにPOST送信す...
-
Dosブロンプトでtabを出力したい
-
DTOとEntityの差は何ですか。
-
wordの差し込み印刷で文字...
-
syntax error, unexpected 'ech...
-
shシェルスクリプト 空白行の...
-
「取得先」という表現について
-
【C#】DataGridViewの最大列数...
-
バッチファイルでpingの結果を...
-
findstrのerrorlevel
-
phpでcookieがうまく保存されない
-
Yahoo! JAPAN IDを新規取得でき...
-
【VBA】EXCELブックを開かずに...
-
小数点以下0の非表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
asp.netでのセッションを使用し...
-
VBAで重複チェックの仕方を教え...
-
POSTで受け渡したものを保存し...
-
HTMLエスケープ処理とデーター...
-
php に関して質問です。 各ユー...
-
php 入力画面から確認表示画面...
-
PHPで名寄せするには?
-
PHPで値を保持する方法
-
フォームを使わずにPOST送信す...
-
php history.back()の戻るボタ...
-
ログイン画面から入って、「戻...
-
IFRAME内PHPのセッション変数取...
-
セッション使用時のフォームの...
-
HTMLエスケープすべき場所につ...
-
cURL関数を使用したphpからのpo...
-
formの確認ページからformに戻...
-
PHP+MySQLからHTMLページを自動...
-
こんなことはPHPで可能なのでし...
-
「ページネーション」で検索キ...
-
動的にhtmlテーブルを表示
おすすめ情報