【问题标题】:CodeIgniter] Empty Optgroup using form_dropdownCodeIgniter] 使用 form_dropdown 清空 Optgroup
【发布时间】:2017-04-23 15:39:23
【问题描述】:
    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
    • e

除了我不知道如何处理空的 optgroup 之外,给出的代码运行良好:S

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

【问题讨论】:

    标签: forms codeigniter


    【解决方案1】:

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

    1. 导航到/system/helpers/form_helper.php
    2. 找到form_dropdown函数
    3. optgroup 循环之后添加if(empty($optgroup_val)) continue;

    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 也是如此(这只是多一点工作):

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

    参考:"Extending" Helpers in Helper Functions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多