2013-04-11 20 views
3

我將多選框的結果傳遞給頁面,以便可以在屏幕上顯示選擇內容。由於它是多選的,因此結果可以是標量或數組引用。有沒有辦法找出這個問題?我在網上找不到任何東西,但我想可能有一個.array.array_ref令牌可用於驗證。 我正在使用模板工具包,Perl和舞者。我可以使用Template Toolkit找出變量是否是一個數組?

所以這是我有一個標量:

<% 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 %> 

回答

7

如果<%- multitext.0 -%>回報非零值,這是一個數組引用。

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

我通常處理的方式是迫使它是一個數組,如果它是一個標量,如:

<%- SET items = multitext.0 ? multitext : [ multitext ]; 
    FOREACH item IN items; 
     ... 
    END; -%> 
+0

非常好,謝謝。 – dgBP 2013-04-12 10:05:09

+1

RET,你的語句「如果<% - multitext.size - %> ...返回一個非零值,它是一個arrayref」,並不嚴格正確。它也可能是一個hashref。根據Template Toolkit文檔,在散列(ref)上使用'size'方法「返回散列中的鍵/值對的數量。」儘管如此,multitext.0運行良好。 – 2013-10-15 17:55:53

+0

好點,莫里茨,雖然問題具體是數組或標量值。我修改了一般情況下的答案。 – RET 2013-10-15 22:24:42

相關問題