12

我有一个使用 Mojolicious 框架的应用程序。我在数据库中有一个表,其中包含错误响应列表和与之相关的其他详细信息。我已经创建了相应的结果和结果集来处理数据库表。还有一个控制器通过与结果集交互来获取有关错误的详细信息。

我的想法是在此控制器中调用一个操作,该操作将通过查询数据库来获取(由另一个控制器)传递给它的错误的详细信息,加载有关请求资源的环境的运行时信息,从而导致错误,创建一个响应并返回到调用它的控制器。

我正在努力处理从一个控制器到另一个控制器的呼叫。我如何在 Mojolicious 中做到这一点?$self我可以传递控制器对象(

4

1 回答 1

10

在 Mojolicious 中,您可能希望使用帮助器传递该对象而不创建Mojolicious::Controller它:

在您的主要课程中:

sub startup {
    my $app = shift;

    # ...
    my $thing = Thing->new(foo => 42);
    $app->helper(thing => sub {$thing});
}

在您的控制器中:

sub cool_action {
    my $c = shift;

    # ...
    my $foo = $c->thing->gimmeh_foo('bar');
    # ...
}

但是,如果您想为某些操作准备一些东西(例如数据库),也许under对您有帮助:

要与多个嵌套路由共享代码,您可以 [...]

PS:Mojolicious 的这个功能之前被命名为Bridges。答案相应更新。

于 2012-11-08T17:22:36.553 回答