- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Perl-Mojolicious/概要 へ行く。
- 1 (2010-02-02 (火) 19:52:16)
- 2 (2010-02-02 (火) 19:58:13)
- 3 (2010-02-06 (土) 21:01:35)
- 4 (2010-02-07 (日) 12:10:45)
Mojolicious 概要
ルーティング
アプリケーションクラスのstartup()で設定
$r->route('/example/welcome2',)->to(controller => 'example', action => 'welcome2')->name('welcome2');
このURLへのリンクを張るには
<a href="<%= url_for('welcome2') %>"> GO to welcome2 </a>
参考
http://d.hatena.ne.jp/perlcodesample/20091102/1246274997
リダイレクト
sub index2 { my $self = shift; return $self->redirect_to($self->url_for(controller => 'example', action => 'index')); }
モデルクラスをアプリケーションクラスに登録する
package MyApp; use MyApp::Model; __PACKAGE__->attr(model => sub { MyApp::Model->new });
- attr()はモデルクラス等を登録出来るアクセサ。
- http://search.cpan.org/perldoc?Mojo::Base
テンプレート
- http://search.cpan.org/perldoc?MojoX::Renderer
- ファイルタイプ(HTMLやJSON)毎にレンダラー(テンプレートエンジン)を登録出来る。
コントローラからテンプレートに変数を渡し出力する
$self->stash->{foo} = "FOO"; $self->render(); もしくは $self->render( foo => 'FOO' );
HTMLテンプレートファイル
<%= $foo %> # エスケープされる <%== $foo %> # エスケープされない <%= (localtime)[5] + 1900 %>年 # Perl組込み関数 <%#= TODO:XXXX %> # コメント
- ↑ templates/example/index.html.ep
- Mojo::Template(標準テンプレートエンジン) http://search.cpan.org/perldoc?Mojo::Template
いったん出力結果を取り出し、再出力する
$self->stash->{partial} = 1; my $html = $self->render('foo' => 'FOO'); $html =~ s/FOO/BAR/; $self->res->body($html); もしくは $self->stash->{partial} = 0; $self->stash->{text} = $html; $self->render();
FillInFormを使う
$self->stash->{partial} = 1; my $html = $self->render('foo' => 'FOO'); use HTML::FillInForm::Lite; my $h = HTML::FillInForm::Lite->new; $html = $h->fill(\$html, {textarea1 => 'VALUE'}); $self->res->body($html);
http://search.cpan.org/perldoc?HTML::FillInForm::Lite
includeする
%= include {template => 'example/inc'};
自作のhelper関数を登録する
アプリケーションクラスで、
sub startup { $self->renderer->add_helper(zero_pad => sub { sprintf '%04d', $_[1] }); }
登録し、テンプレートで
<%= zero_pad(3) %>
使用する。
デバッグログ
sub index { $self->app->log->debug('### TEST ####'); }
Mojo::Home ホームオブジェクト
$path = $self->app->home->to_string; # /home/taro/mojo/bbs/script/
アプリケーションをApacheでデプロイする
http://www.simplicate.ca/blog/2008/12/getting-started-with-mojolicious---part-1.html