如果在Codeigniter的编辑表单中验证失败,则重新填充复选框


Re-populate checkbox if it fails in validation in an edit form in Codeigniter

在codeigintier中处理一个数据编辑表单。问题是关于重新填充复选框

如果它是一个添加表单(这意味着我不需要关心数据库中的值):

 <?= set_checkbox('is_default', '1'); ?> for checkbox
问题是,在编辑表单中:

我无法重新填充复选框

<?php if ($customer_group[0]['is_default'] == "1") echo "checked"; set_checkbox('is_default', '1'); ?>

复选框将检查,即使我没有检查它在编辑=>失败验证的形式,感谢帮助

我已经在控制器中设置了验证规则,添加表单中的代码正在工作,但是如何处理编辑表单的情况?

为了重新填充复选框,下面的代码可能会有所帮助:

set_checkbox('fieldName', 'fieldValue');

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

form_checkbox('fieldName[]', 'value', set_checkbox('fieldName', 'value'));

现在,如果你正在编辑表单,那么下面的代码可能会帮助你

$getVal=$valFromDb; //$valFromDb is actually value of the filed from db as you are on edit page
if($getVal!=0){
{
   echo form_checkbox('fieldName[]', 'value', true);
}
else
{
   echo form_checkbox('fieldName[]', 'value', false);
}

set_checkbox接受第三个参数来设置默认状态,所以基本上你必须这样做

echo set_checkbox('is_default', 1, $customer_group[0]['is_default'] == "1"); 

能给我一个建议吗?1. 当您进入编辑页面时,隐藏输入框中复选框的所有选中值。

  1. 如果在编辑页面选中复选框,则编辑文本框值的隐藏输入字段的值。

  2. 提交,当验证失败时,选中或根据隐藏字段值重新填充复选框值。通过数组从控制器发送复选框字段的复选框值来编辑页面视图,如下所示。例如$data['repopulate_checks'] = $this->input->post('array name of checkboxes ');考虑到:就像这样$catch_checkbox = $repopulate_checks;您也可以直接通过$repopulate_checks获取。

您可以使用form_checkbox()函数:Guide

$isChecked = False; // or True for default value

如果已存储数据则:

$isChecked = $customer_group[0]['is_default']; echo form_checkbox('input_name', 'value', $isChecked);

或者最艰难的方式:set_checkbox ():

第一个参数必须包含复选框的名称,第二个参数包含复选框的名称参数必须包含它的值和第三个(可选)参数让你设置一个项目为默认值(使用布尔值TRUE/FALSE)

<input type="checkbox" name="is_default" value="1" <?php echo ($customer_group[0]['is_default']) ? set_checkbox('is_default', '1') : '' ; ?>/>

set_checkbox接受第三个参数来设置默认状态,所以基本上你必须这样做

$checked = FALSE; if($customer_group[0]['is_default']){ $checked = TRUE; }

echo set_checkbox('is_default', 1, $checked);