Ragged, semi-tested; been a long time I really stepped through this so consider this cargo-culting and refer to the docs; Catalyst::Action::RenderView. This idiom is common and useful if you don’t go to the trouble of getting the Plugin::CustomErrorMessage stuff set up.
# In MyApp::Controller::Root…
sub render :ActionClass("RenderView") {}
sub end :Private {
my ( $self, $c ) = @_;
return if $c->response->body; # Stop, good or bad, it's been rende
+red.
$c->forward("render"); # Send to RenderView.
# If there was an error in the render above, process it and just o
+utput the error.
if ( my @err = @{ $c->error } )
{
$c->log->error("Error: " . join(", ", @err));
$c->response->status(503);
$c->response->body("There was an unrecoverable error: " . joi
+n(", ", @err));
# ^^^ Could contain user input like XSS attacks, so naïve/dang
+erous as shown.
# Echoing errors is a security problem in itself.
$c->clear_errors;
}
}
Update 20211102: added a comment about danger of echoing errors and insecurity of sample code.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|