2

在我看来,我有这段代码:

<input type="checkbox" name="test[]" value="1" <?php echo set_checkbox("test[]", "1") ?> >test1 

<input type="checkbox" name="test[]" value="2" <?php echo set_checkbox("test[]", "2") ?> >test2

这些复选框不是必需的,但表单上的其他一些字段是必需的。我想在发布表单时保留这些复选框的状态。如果复选框被选中,则复选框中的值在 POST 中,但是当表单在发布后再次加载时不会保持选中状态(如果其中一些在发布之前被检查,我希望在发布之后对其进行检查) . 我也尝试了 set_checkbox(“test”, “1”),但没有成功。其他文本字段上的值使用 set_value() 函数保存并且工作正常。

4

6 回答 6

4

我意识到 set_checkbox 需要 3 个参数:

 set_checkbox(string $checkboxname, string $value, boolean $isChecked);

例如 :

 echo form_checkbox('mycbx[]',
                    $item['id'],
                    set_checkbox('mycbx[]', $item['id'], false)
      );

或者这样:

$checkbox = array(
    'name'        => 'mycbx[]',
    'value'       => $item['id'],
    'checked'     => set_checkbox('mycbx[]', $item['id'], false)
);
echo form_checkbox($checkbox);
于 2014-02-20T14:38:31.240 回答
2

在您的视图中添加这样的一行:

<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1', true); ?> />

上面的代码假定您希望默认选中该框,如果没有,则只需将第三个参数更改为 false。

然后在您的验证中添加一条没有规则的行(因此 codeigniter 知道它必须对其进行处理)。这是一个例子:

$this->load->library('form_validation');      
$this->form_validation->set_rules('mycheck[]', 'My message that no one will ever see.', '');

最后,确保您没有通过输入状态将输入项显式设置为已检查。这将覆盖 codeigniter 参数。换句话说,不要这样做<input checked />

就是这样。应该像魅力一样工作。

于 2016-01-05T17:42:45.657 回答
1

set_checkbox('mycheckbox', '值',TRUE)

于 2014-05-03T12:09:34.333 回答
1

从 set_checkbox 方法调用中删除 []。

有关更明智的答案,请参阅在表单验证失败后重新填充 Codeigniter 中的复选框

于 2013-05-08T09:37:01.833 回答
0

试试这个人,正在为我工​​作:)
只需将“价值”放入 []

<input type="checkbox" name="test[1]" value="1" <?php echo set_checkbox("test[1]", "1") ?> >test1 

<input type="checkbox" name="test[2]" value="2" <?php echo set_checkbox("test[2]", "2") ?> >test2
于 2021-05-28T05:34:14.307 回答
0

当您在表单中使用像“test[]”这样的数组时,您不需要在set_checkbox调用中包含方括号 ([])。

set_checkbox 应该总是这样:

set_checkbox('test', 'value');

其中 'value' 是表单复选框的第二个参数。

于 2017-03-29T15:30:01.233 回答