2011-02-08 40 views
0

如果遇到這種情況,我真的有麻煩了。 對於每個Smarty - 如果還有其他選項可能會遇到困難

{foreach $values as $value} 

{if $value = a} 
    do action 
{elseif $value = b} 
    do action 
{elseif $value = c} 
    do action 
{/if} 

{/foreach} 

我只是想爲整個的foreach爲「做動作」一次。對於任何一個迭代的foreach,不同的條件(a b或c)可能會是= to $ value

我正在處理的真實世界示例是將「selected」添加到下拉選項。

<select> 
    {foreach $offices as $office}<!-- The if below is done so that the form is sticky, and when editing a post, it shows the post's current setting.--> 

     <option 

     {if $smarty.post.OfficeCode == $office.OfficeCode} 
       selected='selected' 
     {elseif $bulletin_array[0].OfficeCode == $office.OfficeCode} 
       selected='selected' 
     {elseif $office.OfficeCode == $UsersOffice} 
       selected='selected' 
     {/if}     

     title='{$office.Description}' value='{$office.OfficeCode}'>{$office.Title} 
</option> 

    {/foreach} 
</select> 

第一,如果表已submited如果爲真 - 使窗體粘 第二部分將是真實的形式編輯記錄時被預填充 - 即prefil與形式當前值 如果用戶正在創建新記錄,則第三部分將爲真,在這種情況下,將其設置爲用戶通常使用的默認選項。 我需要一些只允許選擇添加一次的方法。 我php我會有一個變量之外的foreach被設置爲真如果選擇被添加。然後我會檢查該變量,然後再執行if elseif

回答

1
{if ($smarty.post.OfficeCode eq $office.OfficeCode) 
    or ($bulletin_array[0].OfficeCode eq $office.OfficeCode) 
    or ($office.OfficeCode eq $UsersOffice)} 
    selected='selected' 
{/if} 
+0

這不起作用,因爲每個選項至少有一個選項是正確的。這意味着所有選項都會被標記爲選中 – andrew 2011-02-08 22:42:42