2011-10-01 115 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>