http://www.perlmonks.org?node_id=1073764

phildeman has asked for the wisdom of the Perl Monks concerning the following question:

Please bare with me, I am new to Catalyst.

Whenever, I get an error pertaining to a view, I get a grey page that says, "Please come back later" in a dozen languages. I would like to by pass this page and send it to a customized error page, with my own response to the user".

I have checked Catalyst::Manual::Cookbook, and used their example:

sub end : Private {
    my ( $self, $c ) = @_;

    if ( scalar @{ $c->error } ) {
        $c->stash->{errors} = $c->error;
#         for my $error ( @{ $c->error } ) {
#         $c->log->error($error);
#         }
        $c->stash->{template} = 'errors.tt';
        $c->forward('MyApp::View::TT');
        $c->clear_errors;
    }

    return 1 if $c->response->status =~ /^3\d\d$/;
        return 1 if $c->response->body;

    unless ( $c->response->content_type ) {
        $c->response->content_type('text/html; charset=utf-8');
    }

    $c->forward('MyApp::View::TT');
}

This sample code does render views correctly, but the page with the error still renders the grey page with, "Please come back later"

So, am I doing anything wrong?
Do I need to include any other package?
Is there an easier/better way of capturing the view error and redirecting it to a customize error page?

Please note, the template in my actual code points to an different file name, and I have the forward method point to my application View directory.
  • Comment on Redirect Catalyst Grey Page to Customized Error Page