Ha *_* Sh 11 model-view-controller perl mojolicious mojolicious-lite
我有一个使用Mojolicious框架的应用程序.我在数据库中有一个表,其中包含错误响应列表以及与之关联的其他详细信息.我已经创建了相应的Result和Resultset来使用DB表.还有一个控制器通过与Resultset交互来获取有关错误的详细信息.
我的想法是在此控制器中调用一个操作,通过查询数据库获取传递给它的错误的详细信息(由另一个控制器传递),添加有关为导致该资源的资源请求的环境的运行时信息.错误,创建响应并返回到调用它的控制器.
我正在努力应对从一个控制器到另一个控制器的呼叫.我如何在Mojolicious中做到这一点?我可以传递控制器对象($self
)来实现这一点,但有没有更好的方法来做到这一点,所以我完全将我的错误处理响应与调用控制器分开?
在Mojolicious中,您可能希望使用帮助程序传递该对象而不创建Mojolicious::Controller
它:
在你的主要课程中:
sub startup {
my $app = shift;
# ...
my $thing = Thing->new(foo => 42);
$app->helper(thing => sub {$thing});
}
Run Code Online (Sandbox Code Playgroud)
在你的控制器中:
sub cool_action {
my $c = shift;
# ...
my $foo = $c->thing->gimmeh_foo('bar');
# ...
}
Run Code Online (Sandbox Code Playgroud)
不过,如果你想编写的一些行动的东西(如数据库),也许下是对你有帮助:
要与多个嵌套路线共享代码,您可以[...]
PS:Mojolicious的这个特征以前被命名为Bridges.答案相应更新.