【发布时间】:2018-10-30 22:49:33
【问题描述】:
我想在 Mojolicious::Lite 应用中使用适量的转发给其他控制器。
我想我可以使用->to (docs) 做类似的事情
(get '/x')->to('Route#bar');
get '/y' => sub {
my $c = shift;
$c->render(text => 'here')
} => 'y';
app->start;
控制器包中的代码如下所示:
package Route::Controller::Route;
use Mojo::Base 'Mojolicious::Controller';
sub bar {
my $self = shift;
$self->render(json => { hello => 'simone' });
}
1;
但它似乎不起作用,因为 http://localhost:3000/x 返回 404“页面未找到......尚未!” http://localhost:3000/y 工作正常
日志转储如下所示:
[Wed May 23 11:39:47 2018] [debug] Template "route/bar.html.ep" not found
[Wed May 23 11:39:47 2018] [debug] Template "not_found.development.html.ep" not found
[Wed May 23 11:39:47 2018] [debug] Template "not_found.html.ep" not found
[Wed May 23 11:39:47 2018] [debug] Rendering cached template "mojo/debug.html.ep"
[Wed May 23 11:39:47 2018] [debug] Rendering cached template "mojo/menubar.html.ep"
我是不是搞错了?
【问题讨论】:
-
当你这样做并调用路由时会发生什么?
-
@simbabque - 查看编辑
-
如果您可以发布调试日志的相关部分,那将非常有帮助。 Mojolicious::Lite 确实允许调用
->to()(get ...与app->routes->get(...)相同),但您必须确保 Mojolicious 找到并使用正确的控制器。请注意,回调不是控制器或控制器动作,所以->to('#y')在这里找不到任何东西——考虑使用单独的控制器类。 -
@amon - 我添加了日志输出并将代码分离到一个控制器包中
标签: perl mojolicious