以下是codeigniter视图中的一些代码:
<li>
<label>Assign volunteer to event:</label><br />
<? foreach ($all_vols as $vol) :?>
<?=form_checkbox('volunteers', $vol) ?>
<?=$vol['username']?>
<br />
<? endforeach ?>
</li>
我希望volunteers
变量中有一个名为$_POST
的数组。相反,我得到的是'volunteers' => string('array')
。有什么想法吗?
答案 0 :(得分:4)
以这种方式使用时,不能将数组用作form_checkbox()的第二个参数,并且$vol
可能是稍后使用$vol['username']
时的数组。你混淆了表单助手,它将第一个参数用作'name'属性,第二个参数用作'value'。
尝试:
<? foreach ($all_vols as $vol) :?>
<?=form_checkbox('volunteers[]', $vol['username']) ?>
<?=$vol['username']?>
<br />
<? endforeach ?>
答案 1 :(得分:3)
来自CI的userguide
$data = array(
'name' => 'newsletter',
'id' => 'newsletter',
'value' => 'accept',
'checked' => TRUE,
'style' => 'margin:10px',
);
echo form_checkbox($data);
// Would produce:
<input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />
您的数组应该包含填充复选框所需的数据。因此,如果您确定它包含填充字段所需的内容,您可能希望将复选框更改为<?=form_checkbox($vol) ?>
。
答案 2 :(得分:1)
http://codeigniter.com/user_guide/helpers/form_helper.html处的文档建议使用字符串作为第一个参数(在您的情况下为“志愿者”),在使用<input type="checkbox" />
作为属性值时会生成$vol
该名称输入标签内的对。这是你想要的吗?如果是这样,您显然会得到“用户名”属性。