Kohana(PHPフレームワーク)では、レイアウトは、テンプレートビューのテンプレートとして機能する$ templateと呼ばれるメンバ変数であるTemplate_Controllerによって実装されます。 アクションメソッドでは、$テンプレートにさらにサブビュー、通常はコンテンツビューを設定することができます。 (http://forum.kohanaframework.org/discussion/3612/kohana-layout-system/p1)実行時のレイアウトテンプレートを変更する
これにより、ランタイム中のレイアウト「テーマ」を変更することができます。テナントが自分のテーマ(2桁、3桁など)を選択できるマルチテナントシステムに便利です
スカラテンプレートエンジンを使用して、プレイフレームワーク2でどのように達成できますか? つまり、テナントが選択できる複数のレイアウトテンプレートが必要です。コントローラはレイアウトテンプレートとアクション固有のコンテンツテンプレートをレンダリングします。ユーザーに基づいて
- 、(名前はデータベース内の文字列に格納され、マッピング・ビュー・ファイルを対応している)レイアウトのテーマを取得:
(コントローラのアクションの擬似コード)のようなものを。
- アクション固有のコンテンツビューをレンダリングします。
- (2)とともに(1)から得られたレンダリングレイアウトビュー。
注:アクションごとに、レイアウトテーマはユーザーごとに変更できますが、コンテンツビューは変更されません。それに
は、コンテンツテンプレート、たとえば、index.scala.htmlドキュメント(http://www.playframework.com/documentation/2.1.1/ScalaTemplateUseCases)
だ、main.scala.htmlで定義されているメインの呼び出し、レイアウトテンプレートが含まれています。つまり、ハードコーディングされているため、index.scala.htmlはmain.scala.htmlに密接に結合されています。
私はリフレクションを使用してコントローラからメインを呼び出してから、コンテンツを渡します。
代わりに、Scalateなどの解釈済みテンプレートエンジンを使用することもできます。
提案がありますか?