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 });

テンプレート

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

 $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

参考・マニュアル


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