Php form_checkbox()在codeigniter中返回字符串而不是数组
下面是codeigniter视图中的一些代码:Php form_checkbox()在codeigniter中返回字符串而不是数组,php,forms,codeigniter,post,Php,Forms,Codeigniter,Post,下面是codeigniter视图中的一些代码: <li> <label>Assign volunteer to event:</label><br /> <? foreach ($all_vols as $vol) :?> <?=form_checkbox('volunteers', $vol) ?> <?=$vol['username']?>
<li>
<label>Assign volunteer to event:</label><br />
<? foreach ($all_vols as $vol) :?>
<?=form_checkbox('volunteers', $vol) ?>
<?=$vol['username']?>
<br />
<? endforeach ?>
</li>
指定志愿者参加活动:
我希望在
$\u POST
变量中有一个名为志愿者的数组。相反,我得到的是“志愿者”=>string('array')
。有什么想法吗?以这种方式使用时,不能将数组用作形式_checkbox()的第二个参数,并且以后使用$vol['username']
时,$vol
很可能是数组。您混淆了表单帮助器,它将第一个参数用作“name”属性,第二个参数用作“value”
尝试:
上的文档建议使用字符串作为第一个参数(在您的案例中为“志愿者”)将生成该名称的
,同时对输入标记内的属性值对使用$vol
。这是你想要的吗?如果是这样的话,您显然会得到一个“username”属性。来自CI的
$data=array(
“名称”=>“时事通讯”,
“id”=>“时事通讯”,
'值'=>'接受',
“选中”=>为真,
'样式'=>'边距:10px',
);
回显表格复选框($data);
//将产生:
数组应包含填充复选框所需的数据。因此,如果您确定复选框包含填充字段所需的内容,您可能需要将其更改为
。的确!我的问题是,我将数组作为第二个参数传递给表单帮助器。因此,表单助手为每个复选框指定了“array”值。我根据您的建议修复了该问题(并在来源中确认值是正确的)。然而,现在我只得到了$u POST['志愿者]中的最后一个复选框值。难道不应该有一个包含所有选定值的数组吗?为什么我只得到最后一个值?@sarsinmypockets是的,很抱歉我忘了,你需要给志愿者添加括号,这样它就变成了一个值数组(打印以查看结果)。更新了我的答案以反映这一点。
<? foreach ($all_vols as $vol) :?>
<?=form_checkbox('volunteers[]', $vol['username']) ?>
<?=$vol['username']?>
<br />
<? endforeach ?>
$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" />