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
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.


Search Discussions

Discussion Posts


Follow ups

Related Discussions



site design / logo © 2021 Grokbase