записать так
Код: Выделить всё
sub blog : Chained PathPart('blog') CaptureArgs(0) { }
sub user : Chained('blog') PathPart('user') CaptureArgs(1) {
my ( $self, $c, $id_un ) = @_;
$c->stash->{ message } = "Hello 2";
$c->stash->{ arg_sum }->[0] = $id_un;
}
sub view : Chained('user') PathPart('view') CaptureArgs(1) {
my ( $self, $c, $id ) = @_;
$c->stash->{ message } .= "World!";
$c->stash->{ arg_sum }->[1] = $id;
}
sub view_page_off : Chained('view') PathPart('') Args(1) {
my ( $self, $c, $page ) = @_;
$c->stash->{ arg_sum }->[2] = $page;
$c->forward( 'view_blog_message', [ @{$c->stash->{ arg_sum }} ] );
}
sub view_off : Chained('view') PathPart('') Args(0) {
my ( $self, $c ) = @_;
$c->forward( 'view_blog_message', [ @{$c->stash->{ arg_sum }} ] );
}
sub view_page_user : Chained('user') PathPart('') Args(1) {
my ( $self, $c, $page ) = @_;
$c->stash->{ arg_sum }->[1] = $page;
# print '99';
$c->forward( 'view_blog', [ @{$c->stash->{ arg_sum }} ] );
}
sub view_user : Chained('user') PathPart('') Args(0) {
my ( $self, $c ) = @_;
$c->forward( 'view_blog', [ @{$c->stash->{ arg_sum }} ] );
}
и методы будут вызыватся так, друг за другом, как роли... красиво получается
Код: Выделить всё
| Path Spec | Private |
+-------------------------------------+--------------------------------------+
| /blog/user/*/view/* | /blog/blog (0) |
| | -> /blog/user (1) |
| | -> /blog/view (1) |
| | => /blog/view_off |
| /blog/user/*/view/*/* | /blog/blog (0) |
| | -> /blog/user (1) |
| | -> /blog/view (1) |
| | => /blog/view_page_off |
| /blog/user/*/* | /blog/blog (0) |
| | -> /blog/user (1) |
| | => /blog/view_page_user |
| /blog/user/* | /blog/blog (0) |
| | -> /blog/user (1) |
| | => /blog/view_user |
'-------------------------------------+--------------------------------------'