[Catalyst] Error handling
Albert Vila
avp at imente.com
Mon Oct 24 19:06:46 CEST 2005
Hello,
I have a problem trying to configure my catalyst application in order
to do the error handling in the begin method.
I have a controller with multiple functions, each function receives the
same parameter, and I wanna check the parameter integrity in just one place.
Now, my functions looks like:
sub function: Local {
my ( $self, $c ) = @_;
if ($c->req->param('parameter') eq '') {
//do stuff
} else {
$c->forward('error404');
}
}
I wanna achieve something like:
sub function: Local {
my ( $self, $c ) = @_;
//do stuff
}
sub begin : Private {
my ($self, $c) = @_;
my $error = undef;
# Verifiquem tots els paràmetres q ens poden entrar
foreach my $key (keys %{$c->req->params}) {
my $value = $c->req->param($key);
if ($value eq '') {
$error = 1;
}
}
if (defined $error) {
$c->forward('/error404');
}
}
This solution does not work because catalyst continues running the
whole flow process.
Am I doing something wrong?, Any suggestion?
Another question, Is it possible to have urls like
localhost:3000/controller/method/parameter all managed by the same Regex?
For example:
Package controller;
sub integrity: Regex ('_xx/_yy') {
my ($self, $c) = @_;
# Check the integrity for the yy parameter
# If everything is fine then forward to method xx
$c->forward('xx');
}
With this solution you can have only one generic Regex that
handles the errors and if all is ok redirects to the requested action.
This save time and code because you don't have to duplicate the error
check if every Regex function. Than only works in my case that I have
only one parameter used in many functions in the same controller.
Thanks,
Albert
More information about the Catalyst
mailing list