2012-03-16 103 views
0

我正在使用以下方法來顯示多個選擇框,並且它在新窗體中正常工作。在osCMax的選擇框中選擇多個默認或先前選擇的值

echo tep_draw_pull_down_menu("cat[$i][]", $cat_array, '', 'id=cat3, size=5 multiple'); 

但在編輯表單我想在默認情況下被插入附加形式選擇的值。

默認情況下要選擇的值存儲在數組中。所以我將這個數組傳遞給默認值,如下所示。

echo tep_draw_pull_down_menu("cat[$i][]", $cat_array, "$arr", 'id=cat3, size=5 multiple'); 

但它沒有選擇所需的值。它一次只選擇一個值,因爲我們無法將數組傳遞給默認值。

我該怎麼做?

+0

誰能回答這個問題? – Ahmad 2012-03-18 13:00:44

回答

1

如果不更改某些代碼庫,您將無法做到這一點。

默認情況下,tep_draw_pull_down_menu方法只允許和檢查字符串。根本不希望被超過一個值來檢查。

編輯在發現tep_draw_pull_down_menu方法通過觀察這個線(圍繞一個乾淨的312安裝)包括/功能/ html_output.php

if ($default == $values[$i]['id']) { 

它更改爲以下:

if ($default == $values[$i]['id'] || (is_array($default) && in_array($values[$i]['id'], $default))) { 

額外位添加一個檢查,以查看$default變量是否是一個數組,如果是,則選擇選項的當前值是否存在。如果兩個計數都是,則將該選項標記爲選中。

下面是它的一個例子中使用:

$cat_array[] = array("id" => 'marvelman', "text" => 'Kimota!'); 
$cat_array[] = array("id" => 'rorschach', "text" => 'hurm'); 
$cat_array[] = array("id" => 'cerebus', "text" => 'Something Fell'); 
$cat_array[] = array("id" => 'wolvie', "text" => 'Snikt!'); 
$cat_array[] = array("id" => 'spider-man', "text" => 'Thwip'); 

$arr = array('rorschach', 'wolvie', 'cerebus'); 

echo tep_draw_pull_down_menu("cat[$i][]", $cat_array, $arr, 'id="cat3" size="5" multiple'); 

你也可能不希望通過$arr變量加上引號,除非你明確要傳遞的字符串$arr,而不是它的數組值。

+0

感謝您的幫助。它解決了我的問題。 – Ahmad 2012-03-19 06:07:09