2013-08-01 23 views
1

我將一個名爲$ users_criteria的數組分配給smarty模板。陣列是如下:如何使用foreach在smarty中將關聯數組中的值賦給複選框?

$users_criteria = array(
      1 => array(
       'label' => 'Registered users', 
       'condition' => 'date_range' 
       ), 
      2 => array(
       'label' => 'Logged-in users', 
       'condition' => 'date_range' 
       ), 
      3 => array(
       'label' => 'Not logged-in Users', 
       'condition' => 'date_range' 
       ), 
      4 => array(
       'label' => 'Never logged-in Users' 
       ), 
      5 => array(
       'label' => 'Package purchase', 
       'condition' => 'package_type' 
       ), 
      6 => array(
       'label' => 'Try demo packages', 
       'condition' => 'demo_packages' 
       ) 
     ); 
$smarty->assign('users_criteria', $users_criteria); 

     $file_to_show = 'contact-list-import.tpl'; 

現在有在模板6個複選框和欲從上述陣列的每個複選框的值屬性分配標籤值。這是每個複選框應該有一個單一的值從上面的數組。總之,我的要求是:上面數組中的值爲1的鍵應映射到名稱爲registered_users的複選框,上面數組中的值爲2的鍵應該映射到名稱爲logged_in_users的複選框,...類似於這種方式到所有六個複選框。我試圖做到這一點,但我得到的複選框的重複組合。我的代碼如下:

{foreach from=$users_criteria key=myId item=criteria} 
        <tr height="30"> 
        <td align="left" width="20%"> 
        <input type="checkbox" class="user_checkbox" name="user_checkbox" id="registered_users" value="{$criteria.label}"/>Registered users &nbsp;&nbsp; 
        </td> 
        <td valign="middle" align="left" width="10%"><b>From Date </b> : </td> 
        <td align="left" >&nbsp;<input type="text" style="width:100px;" class="inputfield" name="registered_users_from_date" id="registered_users_from_date" maxlength="10" width="20%"></td> 
        <td valign="middle" align="left" width="10%"><b>To Date </b> : </td> 
        <td>&nbsp;<input type="text" style="width:100px;" class="inputfield" name="registered_users_to_date" id="registered_users_to_date" maxlength="10" width="20%"></td> 
        </tr> 
        <tr><td colspan="5">&nbsp;</td></tr> 
        <tr height="30"> 
        <td align="left" width="20%"> 
        <input type="checkbox" class="user_checkbox" name="user_checkbox" id="logged_in_users" value="{$criteria.label}"/>Logged-in users &nbsp;&nbsp; 
        </td> 
        <td valign="middle" align="left" width="10%"><b>From Date </b> : </td> 
        <td align="left" >&nbsp;<input type="text" style="width:100px;" class="inputfield" name="registered_users_from_date" id="logged_in_users_from_date" maxlength="10"></td> 
        <td valign="middle" align="left" width="10%"><b>To Date </b> : </td> 
        <td>&nbsp;<input type="text" style="width:100px;" class="inputfield" name="registered_users_to_date" id="logged_in_users_to_date" maxlength="10"></td> 
        </tr> 
        <tr><td colspan="5">&nbsp;</td></tr> 
        <tr height="30"> 
        <td align="left" width="20%"> 
        <input type="checkbox" class="user_checkbox" name="user_checkbox" id="not_logged_in_users" value="{$criteria.label}"/>Not logged-in Users &nbsp;&nbsp; 
        </td> 
        <td valign="middle" align="left" width="10%"><b>From Date </b> : </td> 
        <td align="left" >&nbsp;<input type="text" style="width:100px;" class="inputfield" name="not_logged_in_users_from_date" id="not_logged_in_users_from_date" maxlength="10"></td> 
        <td valign="middle" align="left" width="10%"><b>To Date </b> : </td> 
        <td>&nbsp;<input type="text" style="width:100px;" class="inputfield" name="not_logged_in_users_to_date" id="not_logged_in_users_to_date" maxlength="10"></td> 
        </tr> 
        <tr><td colspan="5">&nbsp;</td></tr> 
        <tr height="30"> 
        <td width="300" colspan="5"> 
        <input type="checkbox" class="user_checkbox" name="user_checkbox" id="never_logged_in_users" value="{$criteria.label}"/>Never logged-in Users 
        </td> 
        </tr> 
        <tr><td colspan="5">&nbsp;</td></tr> 
        <tr height="30"> 
        <td width="300" colspan="1"> 
        <input type="checkbox" class="user_checkbox" name="user_checkbox" id="package_purchase" value="{$criteria.label}"/>Package purchase 
        </td> 
        <td align="left" colspan="4"> 
         <select name="test_pack_type_id" id="test_pack_type_id"> 
         <option value="">All</option> 
         {if $all_type} 
         {foreach from=$all_type item="type"} 
         <option value="{$type.package_type_id}">{$type.package_type_name}</option> 
         {/foreach} 
         {/if} 
       </select> 
        </td> 
        </tr> 
        <tr><td colspan="5">&nbsp;</td></tr> 
        <tr height="30"> 
        <td width="300" colspan="5"> 
        <input type="checkbox" class="user_checkbox" name="user_checkbox" id="try_demo_packages" value="try_demo_packages"/>Try demo packages 
        </td> 
        </tr> 
        <tr><td colspan="5">&nbsp;</td></tr> 
        {/foreach} 

你可以更正代碼,以便在smarty中使用foreach指定適當的值給複選框嗎?提前致謝。

回答

2

你可以使用{section}標籤。我給你一個例子。

{section name=i loop=$users_criteria} 
    <tr height="30"> 
     <td align="left" width="20%"> 
     <input type="checkbox" class="user_checkbox" name="user_checkbox" id="registered_users" value="{$users_criteria[i].label}"/>Registered users &nbsp;&nbsp; 
     </td> 
     <td valign="middle" align="left" width="10%"><b>From Date </b> : </td> 
     <td align="left" >&nbsp;<input type="text" style="width:100px;" class="inputfield" name="registered_users_from_date" id="registered_users_from_date" maxlength="10" width="20%"></td> 
     <td valign="middle" align="left" width="10%"><b>To Date </b> : </td> 
     <td>&nbsp;<input type="text" style="width:100px;" class="inputfield" name="registered_users_to_date" id="registered_users_to_date" maxlength="10" width="20%"></td> 
    </tr> 
    <tr><td colspan="5">&nbsp;</td></tr> 
{/section} 
相關問題