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;
所以我试图在 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;