在模板中使用Mojolicious操作作为标题

时间:2018-07-25 02:42:37

标签: perl mojolicious

我正在尝试将隐藏的默认“ title”变量设置为动作名称的英文版本。例如:

sub customer_orders {
    ...
}

将有:

title => 'Customer Orders',

可在藏匿处使用,以供模板使用。有谁知道如何做到这一点?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以通过调用方获得子程序名称:

my $sub_name = (caller(0))[3];

从您的输出来看,您可能还需要大写并将_替换为空白

$sub_name =~ s /_/ /g;

我会这样大写: my $title = join(' ', map{ ucfirst lc }split(' ', $sub_name) );

答案 1 :(得分:0)

在Mojolicious模板中,$c->action的名称似乎为$action。因此,您可以执行以下操作:

<title><%= title || action_to_title($action) %>

这样其他模板可以覆盖标题,如下所示:

% title 'My Override Title'

如果未设置action_to_title,则可以添加title助手来准备标题操作。