2009-07-06 10 views
0

PHPではHTML_Template_Flexyを使用していますが、どの言語やテンプレートライブラリにも適用する必要があります。私は比較的複雑なオブジェクトのリストを出力しています。透明性と "ajaxユーザビリティ"をHTMLテンプレートと組み合わせる方法はありますか

私はオブジェクトのリストを繰り返し、その上でtoHtmlメソッドを呼び出しました。私がレイアウトデザイナーにテンプレートを見せようとしていたとき、私はそれがあまりにも不透明であり、実際にtoHtmlメソッドによって実際に生成されるものを見るために多くの追加のPHPソースファイルを調べたり編集したりすることに気付きました。

PHPクラスのHTML文字列の大部分を、ページ構造全体を一度に見ることができる1つのクリアファイル用のテンプレートまで抽出しました。しかし、これは、javascriptを使用してオブジェクトをリストに追加するときに問題を引き起こします。次に、古いtoHtmlメソッドを保持し、メインテンプレートとhtml文字列を同時に維持する必要があります。そのため、ページに追加する必要がある新しいオブジェクトのHTMLだけを出力できます。

私は、ページを構成するオブジェクトに小さなテンプレートを使用するというアイデアに戻っていますが、私のケーキを持ち、それを食べる簡単な方法があるかどうかは疑問でした。全体のページだけでなく、ページ上の小さなオブジェクト用のミニテンプレートも含みます。

編集:

はい、ページの更新は全く問題ではありません。私の懸念事項は、テンプレートファイルの保守性と透過性の両方を持つことです。

ページ全体に1つのテンプレートがある場合は、そのページに表示されるオブジェクトのミニテンプレートを維持する必要があります。

私はちょうどミニテンプレートを持っており、上位レベルのテンプレートからそれらを含めると、トップレベルのHTMLを見て最終結果がどのように見えるかを想像するのがより難しくなります。

答えて

0
  • あなたは、JavaScriptでリストに追加したり、オブジェクトを追加したりすることはできません。 javascriptを使用してオブジェクト全体をドキュメントに追加することはできません。あなたはそれを行うことができるように(状況に応じてクラス、ID、またはコメントブロックさえ)、HTMLへの正しいハンドルを見つける(または追加する)必要があります。

しかし、これは保守性の問題を解決しません。私はあなたが維持しやすいので、小さなテンプレートがほしいと思っています。

  • レイアウトデザイナーがデータ入力の固定セットを指定してテンプレート全体を表示できるようにするには、小さなテストフレームワークを作成する必要があります。例えば、与えられたデータセットAの場合、完全テンプレートはA *であり、データセットBが与えられれば、完全テンプレートはB *である。つまり、レンダラーが実際のHTMLではなくテンプレート化されたHTMLをレンダリングするようにします。

あなたの問題を過剰に設計しているかもしれませんが、問題を明確にする必要があります。

0

あなたの問題は、あなたのHTMLページテンプレートに、AJAXリクエスト用のオブジェクトを出力するHTMLとまったく同じソースコードを持つ部分(たとえばリスト)があり、それらを2回維持したい。

AJAXを使用してオブジェクトを照会するのはなぜですか(私のお気に入りは実際にはJavaScriptのクライアント側でtemplate your viewになりますが、それは単なる個人的な好みです)。つまり、あなたの作品をPHPでテンプレート化し、JavaScriptのAJAXリクエストを通してのみ結合する必要があるということです。

+0

私もこのアプローチを考えました。しかし、ページロード時には、アプリケーションは、「低レベル」オブジェクトに依存する「高レベル」オブジェクトのいくつかのプロパティの値を取得できるように、アプリケーションのデータベース内の大部分のデータを処理しなければなりません。だから、私はすでにこのデータをすべて取得してから、すべてをクライアントに出力することができると考えました。 – Sam

+0

これは意味がありますが、データをJavaScriptオブジェクト(ページに直接出力する)として生成し、HTMLをクライアント側でレンダリングするのはなぜですか? 別のオプションは、あなたの大きなテンプレートに入れるか、AJAXリクエストで直接レンダリングする(PHPで)大きなテンプレートを分割することです。だからあなたはまだそれらを一度だけ維持しなければならない – Daff