On 26 Jan 2009, at 18:56, koniczynek wrote:
Hello Everyone,
I am trying to accomplish what seems to be impossible. There is a
controller, and inside this controller there are 3 methods:
- auto
- do_something
- end
In auto I am testing if user is logged in, if so I am detaching to the
do_something function, if not, I am redirecting to the / In end
function
there is nothing at this point. The code looks somehow like this:
sub auto :Private {
my ( $self, $c ) = @_;
$c->log->debug('action start');
if ( ! user_logged_in) {
$c->redirect( $c->req->base );
} else {
$c->detach( $c->action->{name} );
}
$c->log->debug('action end');
}
detach in auto does not detach/stop processing the entire request,
just the chain of auto commands.
To stop the request from in auto you need to return a false value. I'm
fairly sure this is documented somewhere - cant look now as i'm on a
painfully slow link
FWIW, I'd personally do this with chained actions, but its your choice.
-ash
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/