我将多选框的结果传递给页面,以便可以在屏幕上显示选择。由于它是多选的,结果可以是标量或数组引用。有没有办法找到这个?我在网上找不到任何内容,但我认为可能有.array
或.array_ref
令牌可用于验证。
我正在使用Template Toolkit,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 %>
答案 0 :(得分:7)
如果<%- multitext.0 -%>
返回非零值,则为arrayref。
如果<%- multitext.keys.size -%>
返回非零值,则为hashref。
我通常处理它的方法是强制它成为一个数组,如果它是一个标量,例如:
<%- SET items = multitext.0 ? multitext : [ multitext ];
FOREACH item IN items;
...
END; -%>
答案 1 :(得分:0)
几年后...
您可以使用 .list
vmethod 来保证它是一个数组,例如
<% FOREACH text IN multitext.list %>
Text: <% text %>
<% END %>
见http://template-toolkit.org/docs/manual/VMethods.html#section_list