Назначить переменную в smarty? - PullRequest
0 голосов
/ 01 октября 2011

Я назначил два массива для smarty: profiles и selected_id. Массив profiles содержит массив всех профилей, а массив selected_id содержит идентификаторы отображаемых профилей. Поэтому я отображаю все профили следующим образом:

<select id="countries" class="multiselect" multiple="multiple" name="profiles[]">
        {foreach name = feach item = k from = $profiles}
            <option value="{$k->bz_pro_id}">{$k->bz_pro_first_name} {$k->bz_pro_last_name}</option>
        {/foreach}
      </select>

Теперь я хочу по умолчанию выбрать идентификаторы, которые уже выбраны администратором. Это означает, что если я хочу добавить selected = "selected" в option из select. Для этого я пишу:

{foreach name = feach item = k from = $profiles}
        {foreach name = feach2 item = k2 from = $selected_id}
                {if $k->bz_pro_id == $k2->bz_pro_id}
                        selected = "selected"
                {/if}
        {/foreach}
{/foreach}

Так можно ли присвоить select = "selected" переменной, чтобы я мог использовать ее в option?

Ответы [ 3 ]

3 голосов
/ 01 октября 2011

Я проверил это, и это работает. Предполагая, что ваши массивы выглядят примерно так:

$profiles[] = array ( 'bz_pro_id' => '1', 'bz_pro_first_name' => 'test1', 'bz_pro_last_name' => 'test2');
$profiles[] = array ( 'bz_pro_id' => '2', 'bz_pro_first_name' => 'test3', 'bz_pro_last_name' => 'test4');
$selected_id = array('1');

Синтаксис, который вы используете для доступа к переменным и членам массива, неверен. Это рабочее решение:

<select id="countries" class="multiselect" multiple="multiple" name="profiles[]">
    {foreach name=feach item=k from=$profiles}
        <option value="{$k.bz_pro_id}" 
           {if in_array($k.bz_pro_id, $selected_id)}selected{/if}>
            {$k.bz_pro_first_name} {$k.bz_pro_last_name}
        </option>
    {/foreach}
  </select>
1 голос
/ 01 октября 2011

вы можете использовать следующий код.

<select id="countries" class="multiselect" multiple="multiple" name="profiles[]">
        {foreach name = feach item = k from = $profiles}
            <option value="{$k->bz_pro_id}" {if $k->bz_pro_id|in_array($selected_id)}selected = "selected"{/if}  >{$k->bz_pro_first_name} {$k->bz_pro_last_name}</option>
        {/foreach}
</select>
0 голосов
/ 01 октября 2011
{assign var="name" value="Bob"}

Ссылка: http://www.smarty.net/docs/en/language.function.assign.tpl

...