我正在提取一个查询的result_array()并将该数组作为要在form_multiselect()中选择的字段。我似乎无法弄清楚为什么多选显示数组索引后跟每个查询结果。这是我的数组的问题还是有form_multiselect选项我缺少数组索引不显示?
我的代码如下:
public function get_tags() {
$this->db->select('tag_name');
$this->db->distinct();
$this->db->from('offers_tags');
$query = $this->db->get();
$tags = $query->result_array();
return $tags;
}
我的控制器:
$this->data['tags']=$this->offer_model->get_tags();
我的观点:
<div class="control-group">
<?= form_label('Tags: ', 'tag_targets', $label_attr);?>
<div class="controls">
<?= form_multiselect('tag_targets[]',$tags,'','id="geo-select"');?>
</div>
</div>
答案 0 :(得分:0)
也许你的参数顺序错了。
第一个参数将包含字段的名称,第二个参数 参数将包含一个关联的选项数组,第三个 参数将包含您希望选择的值 http://ellislab.com/codeigniter/user-guide/helpers/form_helper.html
如果你不确定
,你也可以var_dump数组来检查值答案 1 :(得分:0)
我认为您没有正确指定选项。http://ellislab.com/codeigniter/user-guide/helpers/form_helper.html
你应该指定这样的选项:
$tags = array(
'tag1Value' => 'tag1Name',
'tag2Value' => 'tag2Name',
'tag3Value' => 'tag3Name',
'tag4Value' => 'tag4Name'
);
但是,您从get_tags
函数返回的内容是:
array(
0 => array('tag_name'=> 'Tag1'),
1 => array('tag_name'=> 'Tag2'),
2 => array('tag_name'=> 'Tag3')
)
每个结果都是一个包含数据包的单独数组。
您可以通过循环浏览项目并创建新数组,将结果转换为form_multiselect
所需的格式。在get_tags
功能中,您可以执行以下操作。
$tags = array();
foreach ($query->result_array() as $row)
{
$tags[$row['tag_name']] = $row['tag_name'];
}
return $tags;