2011-10-01 183 views
0

我已将两个数组分配给smarty:profilesselected_idprofiles数组包含的所有配置的阵列和阵列selected_id包含要显示的配置文件IDS。所以我显示所有配置是这样的:在smarty中赋值变量?

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

现在我想为默认选择已选定的ID由管理员。这意味着如果我想在selectoption中添加selected = "selected"。对于我写的:

{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

我测试了这个,它的工作原理。假设您的阵列如下所示:

$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> 
+0

我尝试这样的A/C至UR建议'{的foreach名称= feach9项= K9从= $型材} \t \t {如果in_array($ k9-> bz_pro_id,$ selected_id)} {Hiiii /如果} {/ foreach}'。但它没有显示任何东西! – Nitish

+0

查看更新后的答案;) – Friek

+0

我仍然没有得到任何东西,'print_r($ profiles)'显示'Array([0] => stdClass Object([bz_pro_first_name] => Al Zahir [bz_pro_last_name] => Hussain [bz_pro_id] = > 9)[1] => stdClass Object([bz_pro_first_name] => Christian [bz_pro_last_name] => John [bz_pro_id] => 2)[2] => stdClass Object([bz_pro_first_name] => Justin [bz_pro_last_name] => Law [bz_pro_id] => 1))'和'print_r($ selected_id)'显示Array [[0] => stdClass Object([bz_pro_id] => 9)[1] => stdClass Object([bz_pro_id] => 2 ))' – Nitish

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>