foreach($product_categories as $product_category)
{
$options = array();
foreach($series_categories as $series_category)
{
if($product_category['prod_cate_idx'] == $series_category['prod_cate_idx'])
{
$options[$series_category['series_cate_idx']] = $series_category['series_cate_name'];
}
}
if(count($options) > 0)
{
$series_category_dropdown[$product_category['prod_cate_name']] = $options;
}
else
{
//problem here. how to make a empty optgroup?
$series_category_dropdown[$product_category['prod_cate_name']] = array('', NULL);
}
empty($options);
}好的,我这里有两种类型--一种是产品类别,另一种是属于一个产品类别的系列类别。产品类别可能有也可能没有系列类别。
我需要这样做一个下拉菜单:
给出的代码非常有效,只是我不知道如何处理空的optgroup :S
我在谷歌上搜索了很多东西,想知道如何生成像C&D这样的空光学组,但还没有找到解决方案,也没有人尝试过:(有人知道我应该如何生成多维数组才能实现这一点吗?)谢谢。
发布于 2013-10-13 17:55:59
纵观CI的核心代码,这是不可能的。但是,通过编辑一个核心文件可以很容易地修复它,我认为您可以在这里编辑一个核心文件,因为它不会对下拉菜单中的其他任何内容产生影响:
/system/helpers/form_helper.phpform_dropdown函数if(empty($optgroup_val)) continue;循环之后添加optgroup您的foreach循环现在应该如下所示:
foreach ($val as $optgroup_key => $optgroup_val)
{
// add this line
if(empty($optgroup_val)) continue;
$sel = (in_array($optgroup_key, $selected)) ? ' selected="selected"' : '';
$form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n";
}正如我前面所说的,通常我不建议编辑核心文件,而是扩展CI助手类,CI也是如此(这只是更多的工作):
要“扩展”帮助程序,请在应用程序/帮助程序/文件夹中创建一个文件,其名称与现有的帮助程序相同,但前缀为MY_ (此项是可配置的)。见下文。)。
参考资料: in Helper Functions
https://stackoverflow.com/questions/19345813
复制相似问题