在smarty中分配变量?

时间:2011-10-01 09:38:35

标签: php smarty

我已将两个数组分配给smarty:profilesselected_idprofiles数组包含所有配置文件的数组,selected_id数组包含要显示的配置文件的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>

现在我想默认选择admin已经选择的ID。这意味着,如果我想在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 个答案:

答案 0 :(得分:3)

我测试了这个,它确实有效。假设你的数组看起来像这样:

$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 :(得分:1)

您可以使用以下代码。

<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>

答案 2 :(得分:0)

{assign var="name" value="Bob"}

参考:http://www.smarty.net/docs/en/language.function.assign.tpl