Mojolicious 概要

テストサーバ起動

 MOJO_RELOAD=1 ./script/myapp daemon

http://www.simplicate.ca/blog/2008/12/getting-started-with-mojolicious---part-1.html

構造

  • lib/MyApp.pm アプリケーションクラス
  • lib/MyApp/Example.pm コントローラクラス

ルーティング

 sub startup {
   $r->route('/example/welcome2',)->to(controller => 'example', action => 'welcome2')->name('welcome2');
 }
 <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 });

テンプレート

コントローラからテンプレートに変数を渡し出力する

 $self->stash->{foo} = "FOO";
 $self->render();
 もしくは
 $self->render( foo => 'FOO' );

HTMLテンプレートファイル

 <%= $foo %>                    # エスケープされる
 <%== $foo %>                   # エスケープされない
 <%= (localtime)[5] + 1900 %>年 # Perl組込み関数
 <%#= TODO:XXXX %>              # コメント

いったん出力結果を取り出し、再出力する

 $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

参考・マニュアル

Perl入門~サンプルコードによるPerl入門~
http://d.hatena.ne.jp/perlcodesample/20091210/1260183022
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