2012-03-16 101 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