Chained
今まで Chained って使ってみたことなかったので、やってみた。
まず、こんなことしたい。
| パス | 例 | 内容 |
|---|---|---|
| /* | /hogehoge | hogehoge ページを出力 |
| /*/edit | /hogehoge/edit | hogehoge ページを編集 |
Chained について調べていったけど、例が /page/*/edit みたいなものが多くて、いきなり Args が必要になるケースはどうすればいいのかよくわからなかった。
で、あれこれしてこうしたらできた。
sub root : PathPart('') Chained CaptureArgs(1) { my ( $self, $c, $arg) = @_; $c->stash->{page_name} = $arg; } sub page : PathPart('') Chained('root') Args(0) { my ( $self, $c) = @_; $c->response->body($c->stash->{page_name}); } sub page_edit : PathPart('edit') Chained('root') Args(0) { my ( $self, $c ) = @_; $c->response->body($c->stash->{page_name}. '::edit'); }
これでいいのかな? root と page をまとめられるのかなーと思うけど、うまくできなかったのでこうした。