我使用以下方法显示多选框,它在新表单中运行良好。
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');
但它没有选择所需的值。它一次只选择一个值,因为我们无法将数组传递给默认值。
我该怎么做?
如果不更改一些代码库,您将无法做到这一点。
默认情况下,tep_draw_pull_down_menu
方法只允许和检查字符串。它根本不希望传递多个值进行检查。
编辑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
,而不是其值数组。