Deletions are marked like this. | Additions are marked like this. |
Line 12: | Line 12: |
== デコレータの使い方 == |
== テンプレート側 == === デコレータの使い方 === |
Line 36: | Line 37: |
=== 不明点 === | ==== 不明点 ==== |
Line 40: | Line 41: |
== 置換 == | === 置換 === |
Line 52: | Line 53: |
== プログラム側 == |
簡単なアプリの作成
方針
既存のデータベース(PostgreSQL)データをメンテナンスするための社内用の簡単なアプリを作成する。
- コードはSubversionで管理する。
- テンプレートhtmlは入れ子機能と置換機能しか使用しない。テンプレート内での条件分岐や数式等は必要ない。
- 既存データベースのスキーマは変更しない。
- 社内で利用するためのものなので、デザイン等には凝らない。
テンプレート側
デコレータの使い方
複数ページにわたって同じデザインを用いるのはデコレータを使うのが簡単だが、指定方法は少々わかりにくい。例えば、 commonFrame.htmlの中にuserList.html等を埋め込むには、commonFrame.htmlを
<html> <body> ... #{doLayout/} ... </body> </html>
などとして、#{doLayout/}部分に各ページが埋め込まれるようにする。埋め込まれる側のuserList.htmlは
#{extends 'commonFrame.tml'/}
などと記述すればよいのだが、しかしこの行はuserList.htmlのどこにあってもよい。また、複数のextendsを記述すると、エラーは出ず、最も最後のものが有効になる。
#{extends 'commonFrame.tml'/} #{extends 'anotherFrame.tml'/} <!-- これが有効 -->
であるから、extendsはファイルの最初に記述するよう習慣づけるのがよいと思われる。
不明点
デコレータファイルのパスを指定する方法がわからない。
置換
${}の中に式を記述するとそれが展開されるらしい。が、とりあえずは単に「変数」を記述し、その変数値をプログラム側で設定すればよい。
${variable}
ただし、これは常にエスケープされるため、エスケープされないようにするには次のようにする。
${variable.raw}