PHPではHTML_Template_Flexyを使用していますが、どの言語やテンプレートライブラリにも適用する必要があります。私は比較的複雑なオブジェクトのリストを出力しています。透明性と "ajaxユーザビリティ"をHTMLテンプレートと組み合わせる方法はありますか
私はオブジェクトのリストを繰り返し、その上でtoHtmlメソッドを呼び出しました。私がレイアウトデザイナーにテンプレートを見せようとしていたとき、私はそれがあまりにも不透明であり、実際にtoHtmlメソッドによって実際に生成されるものを見るために多くの追加のPHPソースファイルを調べたり編集したりすることに気付きました。
PHPクラスのHTML文字列の大部分を、ページ構造全体を一度に見ることができる1つのクリアファイル用のテンプレートまで抽出しました。しかし、これは、javascriptを使用してオブジェクトをリストに追加するときに問題を引き起こします。次に、古いtoHtmlメソッドを保持し、メインテンプレートとhtml文字列を同時に維持する必要があります。そのため、ページに追加する必要がある新しいオブジェクトのHTMLだけを出力できます。
私は、ページを構成するオブジェクトに小さなテンプレートを使用するというアイデアに戻っていますが、私のケーキを持ち、それを食べる簡単な方法があるかどうかは疑問でした。全体のページだけでなく、ページ上の小さなオブジェクト用のミニテンプレートも含みます。
編集:
はい、ページの更新は全く問題ではありません。私の懸念事項は、テンプレートファイルの保守性と透過性の両方を持つことです。
ページ全体に1つのテンプレートがある場合は、そのページに表示されるオブジェクトのミニテンプレートを維持する必要があります。
私はちょうどミニテンプレートを持っており、上位レベルのテンプレートからそれらを含めると、トップレベルのHTMLを見て最終結果がどのように見えるかを想像するのがより難しくなります。
私もこのアプローチを考えました。しかし、ページロード時には、アプリケーションは、「低レベル」オブジェクトに依存する「高レベル」オブジェクトのいくつかのプロパティの値を取得できるように、アプリケーションのデータベース内の大部分のデータを処理しなければなりません。だから、私はすでにこのデータをすべて取得してから、すべてをクライアントに出力することができると考えました。 – Sam
これは意味がありますが、データをJavaScriptオブジェクト(ページに直接出力する)として生成し、HTMLをクライアント側でレンダリングするのはなぜですか? 別のオプションは、あなたの大きなテンプレートに入れるか、AJAXリクエストで直接レンダリングする(PHPで)大きなテンプレートを分割することです。だからあなたはまだそれらを一度だけ維持しなければならない – Daff