Smarty - Сложно, если еще сделать выбор вариантов - PullRequest
0 голосов
/ 09 февраля 2011

У меня реальная проблема с тем, чтобы разобраться с этим умом еще, если. За каждый

{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

Пример из реального мира, над которым я работаю, - это добавление «выбранного» в раскрывающийся список.

<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, если форма была отправлена ​​- чтобы сделать форму липкой вторая часть будет верна, форма предварительно заполняется при редактировании записи - то есть предварительно заполнить форму текущим значением третья часть будет истинной, если пользователь создает новую запись, и в этом случае установите для нее значение по умолчанию, которое пользователь обычно использует. Мне нужен какой-то способ разрешить добавление выбранного только один раз. Я php У меня будет переменная за пределами foreach, который был установлен в true, если выбран был добавлен. Затем я проверил бы эту переменную перед выполнением if elseif

1 Ответ

1 голос
/ 09 февраля 2011
{if ($smarty.post.OfficeCode eq $office.OfficeCode) 
  or ($bulletin_array[0].OfficeCode eq $office.OfficeCode) 
  or ($office.OfficeCode eq $UsersOffice)}
    selected='selected'
{/if}
...