このエントリはPlay frameworkひとりアドベントカレンダーの24日目です。
今日は /admin/order.csv を実装します。CSVダウンロードです。
今日も今までと同じ流れでいきましょう。
[Read More]このエントリはPlay frameworkひとりアドベントカレンダーの24日目です。
今日は /admin/order.csv を実装します。CSVダウンロードです。
今日も今までと同じ流れでいきましょう。
[Read More]このエントリはPlay frameworkひとりアドベントカレンダーの23日目です。
今日は /admin を実装します。
今日も今までと同じ流れでいきましょう。
get '/admin' => sub {
my ($self, $c) = @_;
$c->render('admin.tx')
};
post '/admin' => sub {
my ($self, $c) = @_;
open(my $fh, 'root_dir . '/../config/database/initial_data.sql') or die $!;
for my $sql () {
chomp $sql;
$self->dbh->query($sql) if $sql;
}
close($fh);
$c->redirect('/admin')
};
modelいらない、viewたいしたことない、というわけで、controllerをがんばりましょう。
といってもファイルからSQLを読み込んでがーっと流すだけです。
このエントリはPlay frameworkひとりアドベントカレンダーの22日目です。
今日は画面左側の recent_sold を実装します。
実装にさしあたりやることは次の2つ。
このエントリはPlay frameworkひとりアドベントカレンダーの20日目です。
今日は /ticket/ を実装します。
昨日までと同じ流れでいきましょう。
viewを仮実装する場合、注意点がひとつあります。
それは viewのファイルサイズに制限がある ということ。
このエントリはPlay frameworkひとりアドベントカレンダーの19日目です。
今日は /artist/ を実装します。
例によって元コードを見ます。
get '/artist/:artistid' => [qw(recent_sold)] => sub {
my ($self, $c) = @_;
my $artist = $self->dbh->select_row(
'SELECT id, name FROM artist WHERE id = ? LIMIT 1',
$c->args->{artistid},
);
my $tickets = $self->dbh->select_all(
'SELECT id, name FROM ticket WHERE artist_id = ? ORDER BY id',
$artist->{id},
);
for my $ticket (@$tickets) {
my $count = $self->dbh->select_one(
'SELECT COUNT(*) FROM variation
INNER JOIN stock ON stock.variation_id = variation.id
WHERE variation.ticket_id = ? AND stock.order_id IS NULL',
$ticket->{id},
);
$ticket->{count} = $count;
}
$c->render('artist.tx', {
artist => $artist,
tickets => $tickets,
});
};
さて、ticketごとのカウントをviewにどう渡すか困ってしまいました。。
とりあえず動けばいいので、力技ですがHashMapで渡すことにしましょう。
このエントリはPlay frameworkひとりアドベントカレンダーの18日目です。
今日はトップページを動的にしてみましょう。
といっても左枠の「最近購入されたチケット」は実装がややこしそうなのでとりあえず放置。 まずは右側のみ実装してみます。
[Read More]このエントリはPlay frameworkひとりアドベントカレンダーの17日目です。
今日はまず静的ファイルを配置しましょう。
全体を通した作戦として、モチベーションを落とさないために画面が表示できる状態を保ちつつ開発することにします。
[Read More]このエントリはPlay frameworkひとりアドベントカレンダーの15日目です。
ネタなくなってもーた(´・ω・`)
というわけでだいたい作れるようになったので、Playの動作環境そのもののチューニングに手をつけていきましょう。
[Read More]