- $self->param()メソッドを使う。
- 入力フォームでは、<form action="/ページ名" method="post"> ~テキストボックス、ボタンなど~ </form>を使う。
- /ページ名は、でーたの送り先、メソッド=postは、webサーバにpostでデータを投げる。
/ページ名 のpostで送られた(受けた)側の処理は・・・
post '/ページ名' => sub {
my $self = shift;
my $name = $self->param('パラメータ変数名');
$self->stash($name=>'namaefield');
$self->render();
}=>'page'
でpageテンプレートにデータを投げる。
__DATA__
@@page.html.ep
<html>
<head></head>
<body>
<%= $namaefield %>
</body>
</html>
----------------------------------------------------------------------------------------
stashで投げるデータが複数ある場合(テーブル等でまとめる場合)は、ハッシュや配列のリファレンスを使い、まとめて投げることもできる。
$self->stash(matomari=>{a=>1,b=>2,c=>3});
テンプレ側は、<%= $matomari->{a} %>でハッシュからデータを展開する。
----------------------------------------------------------------------------------------
テンプレ内にperlのコードを埋め込む場合・・・
% を行頭に書くと、その行はperlのコードとして実行される。html内に動的な処理を書くことができる。
----------------------------------------------------------------------------------------
レイアウト
・・・共通的なhtml記述は、共通テンプレ+各個別bodyに分けて記述できる。body部分を各々テンプレを作り、そこで 共通テンプレを呼び出せば、共通部品を組み込むことができる。
@@ layout/common.html.ep
<html>
<head><title><%= title %></title></head>
<%= content %>・・・ここに各個別のbodyが埋め込まれる。
</html>
@@ hello.html.ep
% layout 'common',title=>'ページタイトル';・・・layout関数を使う。各ページタイトルはtitle変数で渡せる。