MobaSiFは機能がミニマムなので、コントローラに相当すると思われる部分にて以下の記述をします。
- アプリケーションロジックを記述
- レスポンスの値を生成&セット
具体的に書くと以下のような感じ。
conf/pages.conf
our %PAGE = (
'test' => [0,0,0, 'Page::Sample', 'pageMain'],
);
pm/Page/Sample.pm
package Page::Sample;
sub pageMain {
my $func = shift;
# レスポンスの生成
my $html = HTMLTemplate::insert('sample/index', $rhData);
# レスポンスヘッダに値をセット
Response::output(¥$html);
}
template/_system/sample/index.html
<html>
<head><title>$CON:title$</title></head>
<body>
test
</body>
</html>
普段触るフレームワークだと「レスポンスの生成」も「レスポンスヘッダへの値のセット」も自分ですることはまず無くて。テンプレートに渡す値をハッシュで用意して、テンプレート自体はクエリパスなどから自動で判断するかもしくは明示的に指定するかする場合が多い。
ということでこの辺り結構違和感が大きいのでちょっとそれっぽくなるように手を入れてみた。
pm/Context.pm
pm/Page/Main.pm
conf/pages.conf
our %PAGE = (
.
.
.
'test' => [0,0,0, 'Page::Sample', 'test'],
'test1' => [0,0,0, 'Page::Sample', 'test1'],
'test2' => [0,0,0, 'Page::Sample', 'test2'],
);
pm/Page/Sample.pm
template/_system/sample/test.html
次回はDB周りを触ってみる
commit,transactionなどをラップしているものの、サンプルコードではSQL直叩きなのでこれもDBICなどでゴリゴリモデルに落とし込むなどして使った方が良いかもしれない。