3

我将多选框的结果传递到页面,以便可以在屏幕上显示选择。由于它是多选的,因此结果可以是标量或数组引用。有没有办法找出来?我在网上找不到任何东西,但我认为可能有一个.array.array_ref令牌可用于验证。我正在使用模板工具包、Perl 和 Dancer。

所以这是我得到的标量:

<% IF multitext %>
    Text: <% multitext %>
<% END %>

我想要的是...

<% IF multitext %>
    <% IF multitext.array_ref %> <!-- whatever works! -->
        <% FOREACH text IN multitext %>
            Text: <% text %>
        <% END %>
    <% ELSE %>
        Text: <% multitext %>
    <% END %>
<% END %>
4

2 回答 2

9

如果<%- multitext.0 -%>返回一个非零值,它是一个数组引用。

如果<%- multitext.keys.size -%>返回一个非零值,它就是一个 hashref。

我通常处理它的方式是强制它是一个数组,如果它是一个标量,例如:

<%- SET items = multitext.0 ? multitext : [ multitext ];
    FOREACH item IN items;
        ...
    END; -%>
于 2013-04-12T07:39:56.453 回答
0

几年后...

您可以使用.listvmethod 来保证它是一个数组,例如

    <% FOREACH text IN multitext.list %>
        Text: <% text %>
    <% END %>

请参阅http://template-toolkit.org/docs/manual/VMethods.html#section_list

于 2021-04-14T18:54:39.070 回答