CatalystX::Controller::Sugar::ActionPack::Error - Action for error pages


CatalystX-Controller-Sugar-ActionPack documentation Contained in the CatalystX-Controller-Sugar-ActionPack distribution.

Index


Code Index:

NAME

Top

CatalystX::Controller::Sugar::ActionPack::Error - Action for error pages

DESCRIPTION

Top

Used to server custom error pages, which the webapp dispatch to.

VARIABLES

Top

%ERROR_STATUS

This hash holds a mapping between the error template and the response status. See the source code for a sample of default templates.

ACTIONS

Top

Endpoint /error/*

 go '/error' => [$template, $message];

Show error message, and set HTTP response status. Supported status: See %ERROR_STATUS.

Affected stash variables:

 {
   template => "error/$template.tt",
   title => "error - $status_code",
   error_message => $message,
 }

LICENSE

Top

AUTHOR

Top

See CatalystX::Controller::Sugar::ActionPack.


CatalystX-Controller-Sugar-ActionPack documentation Contained in the CatalystX-Controller-Sugar-ActionPack distribution.
package CatalystX::Controller::Sugar::ActionPack::Error;

use Moose;
use CatalystX::Controller::Sugar::Plugin;
use CatalystX::Controller::Sugar::ActionPack::Default;

our %ERROR_STATUS = (
    bad_request => 400,
    fallback => 500,
    internal => 500,
    method_not_allowed => 405,
    no_content => 404,
    not_found => 404,
    unauthorized => 401,
    undefined_user => 404,
);

chain error => sub {
    my $error_id = shift || 'fallback';
    my $msg = shift || '';
    my $status = $ERROR_STATUS{$error_id} || 500;
    my $template = CatalystX::Controller::Sugar::ActionPack::Default::_find_template("error/$error_id");

    unless($template) {
        report error => 'Could not find error template: %s', $error_id if c->debug;
        $template = 'error/fallback.tt';
    }

    stash template => $template;
    stash title => "error - $status";
    stash error_message => $msg;

    res->status($status);
};

1;