1
    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);
    }

好的,我在这里有两个类别 - 一个是产品类别,另一个是属于产品类别之一的系列类别。一个产品类别可能有也可能没有系列类别。

我需要做一个这样的下拉菜单:

  • 一个
    • 一个
    • 一个
    • 一个
    • 一个
    • b
    • b
    • b
  • C
  • D
    • e
    • e
    • e

给出的代码是完美的工作,除了我不知道如何处理空的 optgroups :S

我用谷歌搜索了很多东西,想知道如何生成像 C & D 这样的空 optgroup,但还没有找到解决方案,或者有人已经尝试过了:(有没有人知道我应该如何生成一个多维数组来实现它?谢谢.

4

1 回答 1

1

浏览 CI 的核心代码,这是不可能的。但是,通过编辑核心文件可以轻松解决此问题,我认为您可以在这里编辑核心文件“逃脱”的原因是因为它不会影响您的下拉菜单中的任何其他内容:

  1. 导航/system/helpers/form_helper.php
  2. 查找form_dropdown功能
  3. 循环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 也是如此(它只是多一点工作):

要“扩展”Helper,请在 application/helpers/ 文件夹中创建一个与现有 Helper 同名的文件,但以 MY_ 为前缀(此项目是可配置的。见下文。)。

参考:“扩展”助手函数中的助手

于 2013-10-13T17:55:59.953 回答