在不成功的表单验证后重新填充Codeigniter中的复选框

Nyx*_*nyx 8 php codeigniter

在不成功的表单验证将用户返回到同一表单后,我有一个问题是重新填充一组复选框.下拉菜单和文本输入可以重新填充,但不能重新填充!

这是复选框代码的片段:

        <td>
            <?php echo form_checkbox('ambience[]', 'casual', set_checkbox('ambience[]', 'casual')); ?> Casual <br />
            <?php echo form_checkbox('ambience[]', 'romantic', set_checkbox('ambience[]', 'romantic')); ?> Romantic <br />
            <?php echo form_checkbox('ambience[]', 'outdoor', set_checkbox('ambience[]')); ?> Outdoor / Alfresco <br />
            <?php echo form_checkbox('ambience[]', 'trendy', set_checkbox('ambience[]')); ?> Hip & Trendy <br />
            <?php echo form_checkbox('ambience[]', 'vibrant', set_checkbox('ambience[]')); ?> Vibrant <br />
            <?php echo form_checkbox('ambience[]', 'up_scale', set_checkbox('ambience[]')); ?> Upscale <br />
        </td>
Run Code Online (Sandbox Code Playgroud)

成功重新填充的文本输入的代码段是:

<?php echo form_dropdown('price_range', $options, set_value('price_range')); ?>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我真的很困惑为什么set_checkbox不像宣传的那样工作.

小智 22

为了使set_checkbox正常工作,需要在该元素上使用实际的验证规则.我遇到了这个问题,在重新提交之前无法获得重新提交的值:

$this->form_validation->set_rules('checkbox_name', 'checkbox_title', 'trim');
Run Code Online (Sandbox Code Playgroud)

然后,一切都很完美.

  • +1这是唯一一个解释您需要验证规则才能使set_checkbox正常工作的答案.甚至Codeigniter文档都没有明确说明这一点.对于复选框,set_value看起来也是如此. (6认同)

Fra*_*nes 12

set_checkbox打电话是错的.当您在form_checkbox中使用类似"ambience []"的数组时,您不希望在set_checkbox调用中包含方括号([]).另一个问题是set_checkbox需要第二个参数,您只包含在前2个复选框中.

set_checkbox应该总是这样:

set_checkbox('ambience', 'value');
Run Code Online (Sandbox Code Playgroud)

其中'value'是form_checkbox调用的第二个参数.像这样:

form_checkbox('ambience[]', 'value', set_checkbox('ambience', 'value'));
Run Code Online (Sandbox Code Playgroud)