LiteCart v2.6.3多选复选框仅获最后选中项,如何获取全部选中值?
解决LiteCart v2.6.3多选复选框提交仅返回最后一个值的问题
问题根源在于HTML表单的命名规则:当需要提交多个选中值为数组时,表单字段名必须以[]结尾,否则PHP的$_POST只会保留最后一个选中项的值。
具体解决步骤:
- 修改
form_draw_select_multiple_field的字段名参数,将store改为store[]:<?php echo functions::form_draw_select_multiple_field('store[]', $where_to_buy_locs, true); ?> - 后端接收数据时,直接通过
$_POST['store']即可获取所有选中值的数组。为避免未选中时出现Undefined索引,可添加判断:$selected_stores = isset($_POST['store']) ? $_POST['store'] : [];
原理说明:
LiteCart的form_draw_select_multiple_field函数会根据传入的字段名生成对应HTML控件。当字段名设为store[]时,生成的每个复选框name属性都会是store[],PHP会自动将所有选中的这些控件值收集为一个数组,而不是覆盖为最后一个值。
内容的提问来源于stack exchange,提问作者averlon
相关产品推荐
相关产品推荐

