0

在使用 Codeigniter form_dropdown 函数时,我希望通过以下方式将此数组转换为 optgroup。

<select>
  <optgroup label="Thomas More Kempen">
    <option value="22">D001</option>
    <option value="23">D002</option>
  </optgroup>
  <optgroup label="Thomas More Geel">
    <option value="2">G001</option>
    <option value="8">A102</option>
  </optgroup>
</select>
value is lokaalId

到目前为止,我可以在 optgroup 中显示带有对象 ad chlildren 的“Thomas More ...”,但到目前为止还没有骰子。

已解决:我改变了从数据库获取数据的方式:

function getAllMetCampus() {
        $this->load->model('campus_model');
        $alleCampussen = $this->campus_model->getAll();

        foreach ($alleCampussen as $campus) {
            $lokalen = $this->getAllOnCampusId($campus->id);
            foreach($lokalen as $key=>$value){
                unset($lokalen[$key]);
                $lokalen[$value->lokaalId] = $value->lokaalNr;
            }
            $result[$campus->naam] = $lokalen;
        }
        return $result;
    }

然后我只是echo form_dropdown($result);

4

2 回答 2

1

辅助函数正在主数组中查找数组,而不是stdObjects您的链接输入显示,请参阅源代码:form_helper:336

您将不得不转换您的输入,可能是这样的:

$options = array_map(function($item){
    return (array)$item;
}, $options);

或者,由于您的输入似乎来自数据库查询结果,因此在获取它们时使用result_array()orrow_array()方法而不是result()or 。row()

您应该得到这样的错误,而无需转换:

PHP Catchable fatal error:  Object of class stdClass could not be converted to string
于 2013-03-16T16:29:16.147 回答
1

Optgroups 在 codeigniter 中并不难:

如果你想要这个:

<select>
  <optgroup label="Thomas More Kempen">
    <option value="22">D001</option>
    <option value="23">D002</option>
  </optgroup>
  <optgroup label="Thomas More Geel">
    <option value="2">G001</option>
    <option value="8">A102</option>
  </optgroup>
</select>

您可以像这样简单地循环您的数组:

function getAllMetCampus() {
        $this->load->model('campus_model');
        $alleCampussen = $this->campus_model->getAll();
        $options = array();

        foreach ($alleCampussen as $campus) {
            $options[$campus->naam] = array();

            $lokalen = $this->getAllOnCampusId($campus->id);
            foreach($lokalen as $lokaal){
                $options[$campus->naam][$lokaal->lokaalId] = $lokaal->lokaalNr
            }
        }
        return $options;
    }

让我想知道,为什么你有一个校园和lokaal的ID,每个校园中是否有更多行同名的校园和相同号码的lokalen?对我来说,主键似乎是一种不好的做法,你能对此发表评论吗?

于 2017-08-04T08:45:13.550 回答