【问题标题】:form_checkbox() returns string instead of array in codeigniterform_checkbox() 在 codeigniter 中返回字符串而不是数组
【发布时间】:2011-06-14 19:45:24
【问题描述】:

这是来自 codeigniter 视图的一些代码:

   <li>
      <label>Assign volunteer to event:</label><br />
      <? foreach ($all_vols as $vol) :?>
        <?=form_checkbox('volunteers', $vol) ?>
        <?=$vol['username']?>
        <br />
      <? endforeach ?>  
    </li>

我希望在 $_POST 变量中有一个名为 volunteers 的数组。相反,我得到的是'volunteers' =&gt; string('array')。有什么想法吗?

【问题讨论】:

    标签: php forms codeigniter post


    【解决方案1】:

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

    试试:

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

    【讨论】:

    • 确实!我的问题是我将一个数组作为第二个参数传递给表单助手。因此,表单助手为每个复选框赋予了“数组”的值。我根据您的建议解决了该问题(并在来源中确认这些值是正确的)。但是,现在我只得到 $_POST['volunteers'] 中的最后一个复选框值。不应该有所有选定值的数组吗?为什么我只得到最后一个值?
    • @sarsinmypockets 是的,对不起,我忘记了,您需要为志愿者添加括号,以便它成为一个值数组(print_r 查看结果)。更新了我的答案以反映这一点。
    【解决方案2】:

    来自 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" />
    

    您的数组应包含填充复选框所需的数据。因此,如果您确定它包含填充该字段所需的内容,您可能想将您的复选框更改为 &lt;?=form_checkbox($vol) ?&gt;

    【讨论】:

      【解决方案3】:

      http://codeigniter.com/user_guide/helpers/form_helper.html 的文档建议使用字符串作为第一个参数(在您的情况下为“志愿者”)将生成该名称的 &lt;input type="checkbox" /&gt;,同时将 $vol 用于输入标记内的属性值对。这是你想要的吗?如果是这样,您显然会得到一个“用户名”属性。

      【讨论】:

        猜你喜欢
        • 2019-08-20
        • 2011-09-20
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 1970-01-01
        相关资源
        最近更新 更多