form_checkbox()在codeigniter中返回字符串而不是数组

时间:2011-06-14 19:45:24

标签: php forms codeigniter post

以下是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')。有什么想法吗?

3 个答案:

答案 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该名称输入标签内的对。这是你想要的吗?如果是这样,您显然会得到“用户名”属性。