2013-08-01 103 views
0

我指定一個陣列從PHP給Smarty模板如下:如何在smarty中檢查數組中元素的特定元素存在?

$smarty->assign('data', $contact_list_user_data); 

數組看起來如下:

Array 
(
    [op] => import 
    [contact_list_id] => 9 
    [form_submitted] => yes 
    [cl_user_type] => Array 
     (
      [0] => upload_from_file 
      [1] => copy_paste_from_excel 
     ) 

    [registered_users_from_date] => 
    [registered_users_to_date] => 
    [logged_in_users_from_date] => 
    [logged_in_users_to_date] => 
    [not_logged_in_users_from_date] => 
    [not_logged_in_users_to_date] => 
    [test_pack_type_id] => 
    [submit_value] => Submit 
) 

現在智者模板的表單上我想使特定的複選框檢查是否找到匹配值。但我無法以正確的方式解析數組。簡而言之,如果子數組cl_user_type的值與表單中存在的複選框的值相匹配,我希望選中該複選框。在上面的情況下,我想要選擇最後兩個複選框。如果在smarty的條件下如何寫?你能幫我實現這個目標嗎?我嘗試瞭如果在第一種情況下,但不能成功。 從Smarty的模板的代碼如下:

<tr height="30" id="user_option"> 
        <td width="300"> 
         <input type="checkbox" id="users" name="cl_user_type[]" value="users" {if $data.cl_user_type=='users'}checked="checked"{/if}/>Users 
        </td> 
        <td>&nbsp;<input type="checkbox" id="upload_from_file" name="cl_user_type[]" value="upload_from_file" />Upload From File 
        </td> 
        <td> 
        <input type="checkbox" id="copy_paste_from_excel" name="cl_user_type[]" value="copy_paste_from_excel"/>Copy paste from excel 
        </td> 
        </tr> 

回答

1

你試過智者{html_checkboxes}?如果由於某種原因,你不能使用它,有兩種解決方案,是更好的一個modifiying發送之前的cl_user_type陣列給Smarty這樣的:

[cl_user_type] => Array 
    (
     [upload_from_file] => true, 
     [copy_paste_from_excel] =>true 
    ) 

,然後在你的智者代碼:

<input type="checkbox" id="upload_from_file" name="cl_user_type[]" value="upload_from_file" {if $data.cl_user_type.upload_from_file}checked="checked"{/if}/> 

其他(較差)的選項,使用foreach每一個複選框:

<input type="checkbox" id="upload_from_file" name="cl_user_type[]" value="upload_from_file" 
    {foreach $data.cl_user_type as $type} 
     {if $type=='upload_from_file'}checked="checked"{/if} 
    {/foreach} 
    /> 

的旁註,我建議你使用一個變量,因此您可以輕鬆地複製爲不同的U複選框ser類型。第一種解決方案如下所示:

{$user_type = 'copy_paste_from_excel'} 
<input type="checkbox" id="{$user_type}" name="cl_user_type[]" value="{$user_type}" {if $data.cl_user_type.$user_type}checked="checked"{/if}/>