• 追加された行はこの色です。
  • 削除された行はこの色です。
* 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]]



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS