愛車:マツダアテンザ
Webを中心とした、ビジネス&テクノロジーに関する思いつき
by F-shin
[ このサイトについて ] [ F-shinについて ] [ トップ ]
author:えふしん
photo_20.jpg
藤川真一について


人の良いジョンカビラと言われます。
AMN sponsor rolls
モバツイッター
ヘルメットアタカ
F's Garage関連
このカテゴリ[Web系]の最新30件
モバツイッター、アクセス情報、iPhone対応、広告の話 えがちゃんが批判される理由は簡単、解決法も簡単 日記10/3:パソナテックイベント関連打ち合わせ Wire Free Gadgets Network 企業Webサイトには、そのあり様が現れる?! 動的URLのSEO効果について。 Webサービス事業者は、もっと広告をポジティブな関係にすべし。 はてブコメ一覧表示を一旦拒否して、また戻した ユーザーとしてのPerl,Ruby,PHP..... コミュニティの内輪性と寿命 ソニーイベント報告4日目/4:アプリキャスト ソニーイベント報告3日目/4:PetaMap モバツイ、セキュリティの取り組みについて。 ソニーイベント報告2日目/4:IPTVサービス branco ソニーイベント報告(1日目/4) :Life-X ネット系イベントが広げるべきスケーラビリティ そそそ、それ、カラメルでできるよっ! パソナテックイベントと、WebsigセマンティックWebイベント Joostがビジネス的にイケてないらしい。 Overtureのインタレストマッチの可能性 オープンソースと秘匿性のジレンマ CSSが普通に仕事で使えるようになった日 Google オープンソースのウェブブラウザ「Google Chrome」公開 カラメルのユーザー登録フォームの離脱率を調べてみた 何故、連載記事専用のRSSがないのか? 携帯向けツイッター(twitter)クライアントサービスのモバツイッター、携帯百景と連携 災害安否情報もモバツイをご利用ください、とか言っておくこと。 女性プロフィールがまとめる形で晒されてる件 何故、福山はvipperに人気があるのか。 月刊アスキー10月号斜め読み
[このカテゴリをもっと見る]
thatsPing
Powered by
Movable Type

February 23, 2006

Jemplate で JavaScript でもロジックとビューを分離する」に刺激されて、phpでやってみようかと思ったら、あまりにも簡単なことしか思いつかなくて、それってこういうこと?ってのを書いてみます。

HTMLのWindowインターフェースを研究する

でシンプルなウインドウマネージャを作ってみたのですが、naoyaさんが書かれている通り、JavaScriptで動的出力するHTML部分のコーディングが面倒だなぁと思っていたので、Jemplateなるものの変わりにSmartyを使ったらどうよ?ということで以下のような感じになりましたが・・・・

例:まず最もシンプルなHTML側のコードを書いてみる。
document.writeしてるのは、スクリプトタグから読み込まれるjsonオブジェクトの中にあるHTMLに該当します。
------------------------------------
<script src="testSmt.php" type="text/javascript"></script>
と、   
document.write(jsonTmpl.tmpl);
------------------------------------

scriptタグから読み込まれるphpのコード
smartyの出力をfetchして、jsonでエンコードしてJavaScriptの出力に変換してるだけです。
------------------------------------
require 'lib/smarty/Smarty.class.php';
require 'lib/JSON.php';
$json = new Services_JSON();
$tmpl = $smarty->fetch("dlg_edit_feed.tpl");
$arr = array();
$arr['tmpl'] = $tmpl;
$form = $json->encode($arr);

echo 'var jsonTmpl = ' . $form . ';'
------------------------------------

これで例えば、テンプレートファイルであるdig_edit.feed.tplに、こんな感じのHTMLを書いておけば、
------------------------------------
<form >
フィードURL <input type = "text" size="20" >
<input type ="button" name="" value="読み込む"><br />
</form>
------------------------------------

phpのアウトプットは、以下の通り。

var jsonTmpl = {"tmpl":"<form >\r\n\u30d5\u30a3\u30fc\u30c9URL <input type = \"text\" size=\"40\" >\r\n<input type =\"button\" name=\"\" value=\"\u8aad\u307f\u8fbc\u3080\"><br \/>\r\n<\/form>\r\n\r"};

この例で言えば、smartyテンプレートのHTMLがそのままdocument.writeによる画面に出力されます。

実際使う場合は、レイヤーのウインドウの中身とかにJavaScript側で動的出力するために好きに使ってくださいと言うことですね。
もちろんPHPですから、Ajaxで呼ばれたときに動的に出力を変えるのも簡単です。

・・・って、これだけで良いんですかね?(^^;

もしビューのデータを静的ファイルにしたければ、サーバサイドの出力をコピペして、HTMLに貼り付けてあげればそれでOKですね。Smartyは出力をキャッシュしてるからあえて静的ファイルに切り出すほどのことでもないかもしれませんが。

これでデータとビューはAjaxでJson形式で渡すことができるわけで、JavaScript上にはコントローラーとバリデーションだけを書いてあげれば良いってところでしょうか。

-------------------------------
朝起きて追記:
あぁ勘違い。違うか!
Jemplateのポイントは、クライアントサイドでTTの文法が使えるってことにポイントがあるのか。
あと一歩、先を考えなきゃいけないのね。お恥ずかしい。このエントリ、消そうかな。
--------------------------------
まぁでもデータ同期などを考えると、逐次「あちら側」で処理するのがWeb正しいモデルであり、Ajaxの限界なハズなので、ある程度は使えるな。クライアントサイドでバリバリ高速処理する場合はアレだけど。

■同じカテゴリ[Web系]のエントリー
>>前の記事 Ajax記念日(感傷モード)
<<次の記事 ナローキャストとロングテール
■このblogの書き込み最新3件
GoogleDan モバツイッター、アクセス情報、iPhone対応、広告の話 えがちゃんが批判される理由は簡単、解決法も簡単