45.
Hello World から学ぶ
get '/' => sub {};
ルーティングとコントローラ
GET http://localhost:5000/
get '/entry/:id' => sub {
my $entry_id = $self->stash->{id};
};
post '/entry' => sub {};POST http://localhost:5000/entry
GET http://localhost:5000/entry/1
46.
Hello World から学ぶ
get '/' => sub {
my $self = shift;
$self->stash->{message} = 'Hello Mojo';
...;
}
テンプレートにデータを渡す
$self->render('index'); # index.html.ep を描画
...;
<p><%= $message %></p>
テンプレートの記述とレンダー
62.
Uranai::Model::Uranai
package Uranai::Model::Uranai;
use Mouse;
has 'list' => (
is => 'ro',
isa => 'ArrayRef[Str]',
default => sub {
[qw/良い事が起こるでしょう
出会いがあるかも?
不幸になります
/]}
);
sub uranau {
my ($self, $name) = @_;
my $num = 0;
$num += ord ($_) for split //, $name;
my $index = $num % scalar @{$self->list()};
return $self->list->[$index];
}
__PACKAGE__->meta->make_immutable();
63.
ModelはCLIからも使える
use Uranai::Model::Uranai;
use feature 'say';
my $uranai = Uranai::Model::Uranai->new;
say $uranai->uranau('yusukebe');
ってことは単体でテスト出来る!
64.
Uranai::Web::Controller::Root
package Uranai::Web::Controller::Root;
use Mojo::Base 'Mojolicious::Controller';
use Uranai::Model::Uranai;
sub index {
my $self = shift;
$self->render('index');
}
sub result {
my $self = shift;
my $name = $self->req->param('name');
return $self->redirect_to('/') unless $name;
my $uranai = Uranai::Model::Uranai->new;
my $message = $uranai->uranau($name);
$self->stash->{message} = $message;
$self->render('result');
}
1;