PerlとRubyがくしゅう帳

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_です。 最近は主にPerl関連の勉強会やコミュニティに参加しています。

入力フォームでデータを入力し、そのデータを流用してページを表示するケース

  • $self->param()メソッドを使う。
  • 入力フォームでは、<form action="/ページ名" method="post"> ~テキストボックス、ボタンなど~ </form>を使う。
  • /ページ名は、でーたの送り先、メソッド=postは、webサーバにpostでデータを投げる。
<input type = "submit,text,radioなど。部品を指定" name = 'パラメータ変数名' />

/ページ名 の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変数で渡せる。

Mojolicious::Liteの関数

・get関数
 書式は、get 第一引数,第二引数;
 第一引数=サーバー上の対象パス
 第二引数=GETで第一引数のパスが呼び出された時、第二引数のページを出力する

 第二引数は、まずテンプレート__DATA__を探す。テンプレーとは名前.html.ep
 __DATA__にテンプレが見つからない時は、テンプレートのフォルダのファイルを探す。

・render(テンプレ名)メソッドは、テンプレートをレンダリング(再描画)する(=htmlを生成し吐き出す)
・stashメソッドは、テンプレートに値を渡す。(テンプレート内で変数<%=$変数名>に値をセットする)
・render,stashはメソッドなのでオブジェクトそ指定する必要がある。
$self->stash();
$self->render();

・morbo ファイル.pl で、ファイルをwebサーバとして実行する

・テンプレートの書き方
app->start; (ウェブサーバの実行)コードより下に書く。
__DATA__
@@テンプレ名.html.ep
<html>
ここにhtmlを書く
</html>

YAPC:ASIA2012から一週間、急性的な熱も落ち着いたので、一旦冷静になって感想ブログを書いてみよう。

まず、自分はエンジニアではない初心者プログラマーなので技術的なことは書けないですが・・・。

今回はじめてYAPCに参加してみた。動機は参加しているperlの勉強会の主催者のさんが、毎回、perlのお祭りYAPCは楽しい!と言っていたので、その言葉を受けて、コンピューターやプログラミングがもっと楽しくなるのだろうか、好きになるのだろうか、との期待を込めて参加してみた。(他に夏休みに遊びに行く先が無かったともいう)

結論的には、参加してとても収穫がありました。今回気づいたことは、開発言語の違いとは何か。もちろん技術的な仕様もあるけれど・・・

YAPCの一コマ「Perl 今昔物語」で、naoyaさんが、「ぶっちゃけ今は、perlを選択しなければ出来ないことはない、Perlでなければならない理由はない」って言っていて、自分は、その上で、何故perlなのか?という疑問に対する答を見つけたかった。


自分が感じ取ったその答えは、それは文化であったり、言語に対する愛であったり、コミュニティの人たちの優しさや楽しさであったり・・・

技術云々ではなく、関わる「人」そのもの。
だから、YAPCは楽しいしまた来たくなるし来るとモチベーションが上がるのだろう。

YAPCでモチベーションが上がってPerl入学式を立ち上げた@__papix__さん、kyoto.pmを立ち上げた@shiba_yu36さんの気持ちも今ならよくわかります。

とにかく、もっとコミュニティに参加したい、活性化させたいと思いました。
業としていない分、技術力や触れる時間のアドバンテージはありますが、逆に楽しい部分だけ楽しむ事ができるっていうポジションも有りかなーって思います。

趣味プログラマでも参加できる部分も増えてくれるといいなぁ。
そういう意味ではLTソンは色々な話も聞けてすごく良かったです。

さて、来年は
・Perlをもっと使えるようになりたい。
・来年もYAPC行きたい。チケットは早めに買う
・非エンジニアな趣味でPerl勉強してる人とのつながりもできればいいな


まぁとにかく、

  「Perl使おう!YAPC楽しいよ!Perl mongerの人は面白い!」

まさにミイラ取りがミイラになった、3日間でした。
全てのPerl mongerの皆さん、ありがとうございました!

このページのトップヘ