独自フレームワーク Collabo-Xを紹介する第2弾。
今回は核となる機能の一つである、テンプレート上にデータアクセスを書き込む機能について。
3.テンプレート上でのデータ読み込み
Collabo-XではHTMLの出力にSmartyを利用します。
ただし、$smarty->assgin()などを直接呼出しはせず、
連想配列としてデータを作成して引き渡せば、一発でデータを流し込める仕組みになっています。
ポイントは、「テンプレートを書くだけでも、とりあえず画面の動作を確認できる」状態にすることです。
Smartyのタグでもバグがあります。なので、書いたらすぐに動作を確認したいものです。
また、見た目を作るものですから、出力結果を見ながら確認が必要。お客様にも早く提示したい。
しかし、単にSmartyテンプレートを作っただけでは、テンプレートの動作確認はできないわけです。
最初、テストデータを流し込む処理を用意してというのもやっていたのですが、これはこれで面倒。
そこで、Smartyのユーザ定義タグとして、データをDBから読み込んでアサインするというものを用意。
また、DBからだけでなく、専用タグによって、定数としてテンプレート上でデータを用意できるようにしました。
これなら、モックアップを作成せずに、いきなり動的HTMLのテンプレートを用意しても、
すぐに動作確認ができます。
定数を使ったプロトタイプテンプレートの例
DBにアクセスする動的テンプレートの例
今回は核となる機能の一つである、テンプレート上にデータアクセスを書き込む機能について。
3.テンプレート上でのデータ読み込み
Collabo-XではHTMLの出力にSmartyを利用します。
ただし、$smarty->assgin()などを直接呼出しはせず、
連想配列としてデータを作成して引き渡せば、一発でデータを流し込める仕組みになっています。
ポイントは、「テンプレートを書くだけでも、とりあえず画面の動作を確認できる」状態にすることです。
Smartyのタグでもバグがあります。なので、書いたらすぐに動作を確認したいものです。
また、見た目を作るものですから、出力結果を見ながら確認が必要。お客様にも早く提示したい。
しかし、単にSmartyテンプレートを作っただけでは、テンプレートの動作確認はできないわけです。
最初、テストデータを流し込む処理を用意してというのもやっていたのですが、これはこれで面倒。
そこで、Smartyのユーザ定義タグとして、データをDBから読み込んでアサインするというものを用意。
また、DBからだけでなく、専用タグによって、定数としてテンプレート上でデータを用意できるようにしました。
これなら、モックアップを作成せずに、いきなり動的HTMLのテンプレートを用意しても、
すぐに動作確認ができます。
定数を使ったプロトタイプテンプレートの例
{define
NAME=DATA
btable="
, name, sex, age;
1,akira, 1, 21;
2,hanako,2,19;
"}
<ul>
{foreach from=$DATA item=person}
<li>{$person.name}
({print_constants_one NAME=sex value=$person.sex})
{$person.age}才</li>
{/foreach}
</ul>
DBにアクセスする動的テンプレートの例
{assign_select
NAME=DATA
TABLE=person
WHERE="sex=1"
}
<ul>
{foreach from=$DATA item=person}
<li>{$person.name}
({print_constants_one NAME=sex value=$person.sex})
{$person.age}才</li>
{/foreach}
</ul>