CodeIgniter]使用form_dropdown清空Optgroup

时间:2013-10-13 13:31:41

标签: forms codeigniter

    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'/ LI>
    • B'/ LI>
    • B'/ LI>
  • C
  • d
  • 电子
    • ë
    • ë
    • ë

给出的代码完全有效,除了我不知道如何处理空的optgroups:S

我用谷歌搜索了如何生成像C& C这样的空选择组。 D但是还没有找到解决方案或任何人都尝试过它:(有没有人知道我应该如何生成一个多维数组来实现呢?谢谢。

1 个答案:

答案 0 :(得分:1)

查看CI的核心代码,这是不可能的。但是,通过编辑核心文件可以很容易地解决它,因为我认为你可以通过编辑核心文件来“逃脱”是因为它不会影响你的下拉菜单中的任何其他内容:

  1. 导航至/system/helpers/form_helper.php
  2. 找到form_dropdown函数
  3. if(empty($optgroup_val)) continue;循环
  4. 之后添加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_为前缀   (此项目是可配置的。见下文。)。

    参考:"Extending" Helpers in Helper Functions