2011-06-14 129 views

回答

4

以这种方式使用时,不能使用数组作为form_checkbox()的第二个参数,并且在稍后使用$vol['username']$vol很可能是一个数组。你混淆了表单助手,它将第一个参数用作'name'属性,将第二个参数用作其'值'。

尝试:

<? foreach ($all_vols as $vol) :?> 
     <?=form_checkbox('volunteers[]', $vol['username']) ?> 
     <?=$vol['username']?> 
     <br /> 
<? endforeach ?> 
+0

确实!我的问题是,我将一个数组作为第二个参数传递给窗体帮助器。因此,form-helper给每个复选框赋值“array”。我根据你的建议修正了这个问题(并且在源文件中证实这些值是正确的)。但是,现在我只是获取$ _POST ['志愿者']中的最后一个复选框值。不应该有一个所有选定值的数组?为什么我只获得最后的价值? – starsinmypockets 2011-06-14 20:10:24

+1

@sarsinmypockets对不起,我忘了,你需要添加括号给志愿者,以便它成为一个值的数组(print_r来查看结果)。更新我的回答以反映这一点。 – 2011-06-14 20:29:14

1

http://codeigniter.com/user_guide/helpers/form_helper.html该文档建议使用字符串作为第一个参数(在你的情况下,“志愿者”),而使用$vol的内部属性 - 值对会产生名字的<input type="checkbox" />输入标签。这是你想要的吗?如果是这样,你显然会得到一个“用户名”属性。

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) ?>