Perl mojolicious 控制器重定向到 not_found 页面

Perl mojolicious controllers redirecting to not_found page

所以我试图在 mojolicious 控制器中 return 一个 404 not found 页面,该方法作为 under 语句的一部分被调用,虽然它最终会暂时重定向到 not_found 页面转到指定的操作和目的地。

sub get_host_id {
my $self = shift;
my $host_id = $self->stash('host_id');
return $self->redirect_to('not_found');
return $self->render('not_found');

return $self->reply->not_found;
$self->render(text => '404 Not Found');
$self->rendered(404);
return $self->reply->not_found;
            return $self->render(
          status => 404,
          template => 'not_found',
);
                    $self->reply->not_found;
      }
              template => 'not_found',
    );
                        $self->reply->not_found;
}

已解决:

  sub get_host_id {
    my $self = shift;


    return $self->redirect_to('/not_found');
        }

the method is called as part of an under statement

这是我认为的问题。如果重定向,则需要 return false。来自 the docs

The actual action code for this destination needs to return a true value or the dispatch chain will be broken

查看 not_found 助手的 source code,return 值始终是控制器对象,这是正确的。因此,无论是否呈现 404,正在执行的操作将始终继续执行下一个操作。这不是您天真地期望或想要的。

要解决此问题,您需要编写类似以下内容的内容来代替 return $self->reply->not_found;

$self->reply->not_found and return;