You could maybe try to implement something based on the
docs
http://mojolicious.org/perldoc/Mojolicious/Guides/Rendering#Rendering-exception-and-not_found-pages
FYI, I found I had to implement something similar to you in the
around_action hook for the occasions where a package I didn't have control
of decided to die. In a production environment, having control over the
exceptions is important, and I couldn't find a better pattern.
On Thursday, 1 December 2016 17:52:29 UTC, Peter Valdemar Mørch wrote:
>
> Say in my controller I'm 5 levels deep and discover there is a problem
> with the user's input. I call:
>
> $c->render(
> template => 'errors/badValues',
> message => 'The value of foo cannot be "bar"',
> );
>
> And now I want to stop the entire request right there. I guess the
> behaviour I'm looking for is that of an exception - return up the call
> stack - without having to do something with a return value and then
>
> callSub()
> or return;
>
> at every stack level. So what I've done is create an exception type and
>
> $c->render(
> template => 'errors/badValues',
> message => 'The value of foo cannot be "bar"',
> );
> die(StopRenderingException->new());
>
> And then in setup:
>
> $self->hook( around_dispatch => sub {
> my ( $next, $c ) = @_;
> eval {
> $next->();
> };
> if ($@) {
> my $err = $@;
> if (blessed($err) && $err->isa('StopRenderingException')) {
> return;
> } else {
> die $err;
> }
> }
> });
>
> It does have a hacky smell to it though. Is there a better best-practice?
>
> Peter
>
--
You received this message because you are subscribed to the Google Groups
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.