- 追加された行はこの色です。
- 削除された行はこの色です。
* Mojolicious 概要 [#c9fbc8ee]
*** 編集中 ***
** ルーティング [#tb595d3a]
*** アプリケーションクラスのstartup()で設定 [#c319c563]
$r->route('/example/welcome2',)->to(controller => 'example', action => 'welcome2')->name('welcome2');
*** このURLへのリンクを張るには [#f3c42bea]
<a href="<%= url_for('welcome2') %>"> GO to welcome2 </a>
*** 参考 [#rff91eff]
http://d.hatena.ne.jp/perlcodesample/20091102/1246274997
** リダイレクト [#v485343c]
sub index2 {
my $self = shift;
return $self->redirect_to($self->url_for(controller => 'example', action => 'index'));
return $self->redirect_to($self->url_for('top)');
}
** モデルクラスをアプリケーションクラスに登録する [#o0b0c0ae]
package MyApp;
use MyApp::Model;
__PACKAGE__->attr(model => sub { MyApp::Model->new });
- attr()はモデルクラス等を登録出来るアクセサ。
- http://search.cpan.org/perldoc?Mojo::Base
** テンプレート [#ce5f6dd0]
- http://search.cpan.org/perldoc?MojoX::Renderer
- ファイルタイプ(HTMLやJSON)毎にレンダラー(テンプレートエンジン)を登録出来る。
*** コントローラからテンプレートに変数を渡し出力する [#r1d09773]
$self->stash->{foo} = "FOO";
$self->render();
もしくは
$self->render( foo => 'FOO' );
*** HTMLテンプレートファイル [#m3f7326a]
<%= $foo %> # エスケープされる
<%== $foo %> # エスケープされない
<%= (localtime)[5] + 1900 %>年 # Perl組込み関数
<%#= TODO:XXXX %> # コメント
- ↑ templates/example/index.html.ep
- Mojo::Template(標準テンプレートエンジン) http://search.cpan.org/perldoc?Mojo::Template
*** いったん出力結果を取り出し、再出力する [#fff04a64]
$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を使う [#y771a6c6]
$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する [#oad48fdb]
%= include {template => 'example/inc'};
*** 自作のhelper関数を登録する [#q3ebc5c4]
アプリケーションクラスで、
sub startup {
$self->renderer->add_helper(zero_pad => sub { sprintf '%04d', $_[1] });
}
登録し、テンプレートで
<%= zero_pad(3) %>
使用する。
** デバッグログ [#ne90f424]
sub index {
$self->app->log->debug('### TEST ####');
}
** Mojo::Home ホームオブジェクト [#lcb0864e]
$path = $self->app->home->to_string; # /home/taro/mojo/bbs/script/
- http://d.hatena.ne.jp/perlcodesample/20090422/1241458411
- [[Mojo::Home>http://search.cpan.org/perldoc?Mojo::Home]]
** アプリケーションをApacheでデプロイする [#u605d2e2]
http://www.simplicate.ca/blog/2008/12/getting-started-with-mojolicious---part-1.html
** 参考・マニュアル [#w21c7a85]
- [[Perl入門~サンプルコードによるPerl入門~>http://d.hatena.ne.jp/perlcodesample/20091210/1260183022]]
-- http://d.hatena.ne.jp/perlcodesample/20091112
- [[Mojoを使って自作ウェブアプリをよりポータブルに!(技評)>http://gihyo.jp/dev/feature/01/mojo]]
- [[Mojo公式>http://mojolicious.org/]]
- [[Mojoメーリングリスト>http://lists.kraih.com/pipermail/mojo/]]
- [[Mojo開発リポジトリ>http://github.com/kraih/mojo]]
- [[Template Toolkitプラグイン>http://search.cpan.org/perldoc?MojoX::Renderer::TT]]