代码之家  ›  专栏  ›  技术社区  ›  srchulo

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

  •  1
  • srchulo  · 技术社区  · 6 年前

    我正在尝试将stash中的默认“title”变量设置为操作名的英文版本。例如:

    sub customer_orders {
        ...
    }
    

    将有:

    title => 'Customer Orders',
    

    库存中提供供模板使用。有人知道怎么做吗?谢谢!

    2 回复  |  直到 6 年前
        1
  •  0
  •   bytepusher    6 年前

    您可以通过调用方获取子例程名称:

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

    从您的输出来看,您可能还需要将其大写并用空格替换

    $sub_name =~ s /_/ /g;

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

        2
  •  0
  •   srchulo    6 年前

    看起来像 $c->action 在mojolicious模板中可用 $action . 所以你可以这样做:

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

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

    % title 'My Override Title'
    

    您可以添加 action_to_title 帮助程序准备标题的操作,如果 title 未设置。