在osCMax的选择框中选择多个默认值或先前选择的值

时间:2012-03-16 15:37:37

标签: php oscommerce

我使用以下方法显示多个选择框,它在新表单中正常工作。

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');

但它没有选择所需的值。它一次只选择一个值,因为我们无法将数组传递给默认值。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

如果不改变某些代码库,你将无法做到。

默认情况下,tep_draw_pull_down_menu方法仅允许并检查字符串。根本不希望传递多个值进行检查。

通过查看此行(大约312个干净安装)编辑 includes / functions / html_output.php 中的tep_draw_pull_down_menu方法:

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

将其更改为以下内容:

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

额外位添加一个检查以查看传递的$default变量是否为数组,如果是,则选择select选项的当前值。如果同时为两个计数,则将该选项标记为已选择。

以下是使用中的示例:

$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而不是其数组值。