【问题标题】:Can I forward to action in same controller in Mojolicious我可以在 Mojolicious 的同一个控制器中转发操作吗
【发布时间】:2019-02-04 08:45:52
【问题描述】:

如果我用控制器类拆分我的应用程序,我可以这样做

 get '/foo/bar' => { controller => 'Foo', action => 'bar' };

如果我的操作在同一个 Mojolicious::Lite 文件中,我可以这样做吗?

现在我愿意

sub foobar {
    my $c = shift;
    ...
}

get '/' => sub { foobar(@_) };

但我想这样做

get '/' => { action => 'foobar' };

为了以后的一致性和易于拆分,我应该决定这样做,同时保持一般的 Mojolicious::Lite 结构(即:单个文件)。

如何做到这一点?

【问题讨论】:

    标签: perl mojolicious mojolicious-lite


    【解决方案1】:

    虽然 Mojolicious::Lite 是一个非常简单的包装器,但在 Lite 脚本中定义的任何子程序都不是控制器方法,而是应用程序方法。除了定义一个控制器之外,实际上没有办法让它们成为控制器方法,即使在精简版应用程序(非常简单的包装器)中也是完全可能的,但会使其不那么精简。不过,另一个方向很容易实现;您可以将匿名子例程作为完整应用程序中的操作。您还可以将您的操作编写为助手,然后可以简单地从匿名子例程或控制器操作中调用。对于一个完整的应用程序来说,其中任何一个都可能不是很好的代码组织。

    无论如何,主要的收获是 Mojolicious::Lite 脚本的内容等同于完整应用程序的 startup 子程序,而不是控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 2011-04-27
      相关资源
      最近更新 更多