
moseley at hank
Apr 14, 2006, 6:58 AM
Post #24 of 29
(3048 views)
Permalink
|
On Fri, Apr 14, 2006 at 03:34:39AM +0200, Sebastian Riedel wrote: > What about: > > $c->action('/foo/bar')->forward; > $c->action('/foo/bar')->detach; > > or (suggested by mst): > > > $c->forward( $c->action('/foo/bar') ); > $c->detach( $c->action('/foo/bar') ); That would work, and then in my App base I could define my own method wrappers to name them what I like. Still, seems like (from the volume of responses) that there would be use for a new built-in method. Whatever it's called. Can't change forward's behavior without breaking existing apps. And one request is that if called *without* any arguments it defaults to the default/list action. $c->forward2; I have controllers that commonly include a null Path attribute for a "list" method. In my other actions I often want to "forward" to the list action if input params are bad. So it's nice to not have to name that action by name. package App::C::Admin::User; # show paged list of all users for /admin/user sub list : Path { my ( $self, $c ) = @_; $c->paged_list( class => DB::User ); } # edit for /admin/usrer/edit/3445 sub edit : Local { my ( $self, $c, $id ) = @_; # display list if bad $id passed in return $c->forward2 unless $self->valid_id( $id ); ... } My internal_redirect() that prompted this discussion on #catalyst does this: sub internal_redirect { my ( $c, $action, @args ) = @_; unless ( defined $action ) { $action = $c->action->namespace; } else { $action = join '/', $c->action->namespace, $action unless $action =~ m!^/!; } $c->res->body( $c->subreq( $action, @args ) ); return; } -- Bill Moseley moseley [at] hank _______________________________________________ Catalyst mailing list Catalyst [at] lists http://lists.rawmode.org/mailman/listinfo/catalyst
|