我如何使用 Mojo 进行内部重定向?
How can I internally redirect with Mojo?
Catalyst 支持框架内部的重定向(forward
and detach
)和外部 (HTTP) 重定向(res->redirect)
。内部重定向本质上只是重新分配到新路径,
假设我设置了两条路径,
sub register ( $self, $app, $conf ) {
my $r = $app->routes;
$r->any( 'foo', => \&foo_baz );
$r->any( 'bar', => \&bar_baz );
}
我如何告诉 foo
在它做了一些事情之后,在内部重定向到 bar
?
sub foo_baz ($c) {
; stuff
bar_baz($c)
}
有没有比直接调用 bar_baz($c)
更好的方法?这些路由在 Mojo 插件中声明。
在 IRC 上讨论过,但是:Mojolicious 不像 Catalyst 那样支持内部重定向的动态路由。常见的建议是抽象出你的代码以避免重复,而不是直接调用另一个路由。因此,不是路由 A 调用路由 B,而是它们都将调用一个帮助程序或方法来使用它们当前的控制器对象来完成通用功能。
Catalyst 支持框架内部的重定向(forward
and detach
)和外部 (HTTP) 重定向(res->redirect)
。内部重定向本质上只是重新分配到新路径,
假设我设置了两条路径,
sub register ( $self, $app, $conf ) {
my $r = $app->routes;
$r->any( 'foo', => \&foo_baz );
$r->any( 'bar', => \&bar_baz );
}
我如何告诉 foo
在它做了一些事情之后,在内部重定向到 bar
?
sub foo_baz ($c) {
; stuff
bar_baz($c)
}
有没有比直接调用 bar_baz($c)
更好的方法?这些路由在 Mojo 插件中声明。
在 IRC 上讨论过,但是:Mojolicious 不像 Catalyst 那样支持内部重定向的动态路由。常见的建议是抽象出你的代码以避免重复,而不是直接调用另一个路由。因此,不是路由 A 调用路由 B,而是它们都将调用一个帮助程序或方法来使用它们当前的控制器对象来完成通用功能。