Smarty - 如果选择其他选项则很困难

时间:2011-02-08 22:23:45

标签: foreach smarty if-statement

如果,我真的很难理解这个聪明的人。 对于每个

{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)可能是=到$ 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>

如果表单已被提交,则第一个if将为true - 使表单变粘 第二部分将是真实的,在编辑记录时预先填写表格 - 即预先填写具有当前值的表格 如果用户正在创建新记录,则第三部分将为true,在这种情况下,将其设置为用户通常使用的默认选项。 我需要某种方式只允许选择添加一次。 我php我会在foreach之外有一个变量,如果添加了选择,则设置为true。然后我会在执行if elseif

之前检查该变量

1 个答案:

答案 0 :(得分:1)

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