Normally in Catalyst if you want to break the flow from a current method, you use the
forward method of the catalyst object to internally redirect to a new handler.
Imagine I have a handler responding to requests at
If I want my request to be dealt with by the handler at
/robspage I can issue a forward request in the handler at
/test like this…
## code will continue here.
Once the code at
/robspage has run, control returns to the calling handler.
This isn’t always what is needed, if I don’t want the handler to return and keep running I would need to use the
detach method instead.
## code will not continue here.
This is great, however, the calling URL will not change and the user will not know they are actually seeing
/robspage instead of
/test. Sometimes this is the behaviour we want, however in this case I want the user to know a redirect has happened and for this to be reflected in their browser.
To achieve this, we have to use the
redirect method of the the
Note that I have added a
$c->detach(); call after the redirect as I don’t want the processing chain to continue.