Codeigniter自定义表单验证规则

时间:2020-03-21 14:39:04

标签: php codeigniter

我正在尝试为字段创建自定义验证规则。这是一个多重复选框。

<div class="row checkbox-wrapper" id="checkbox-wrapper">
   <?php foreach ($facilities as $facility) : ?>
      <div class="col-md-6 mb-2">
         <div class="custom-control custom-checkbox">
            <input type="checkbox" name="list_facility[]" value="<?php echo $facility['id']; ?>">
            <label class="custom-control-label"><?php echo $facility['facility_name'] ?></label>
         </div>
      </div>
   <?php endforeach ?>
</div>

所以我尝试使用称为 facility_valdation()

的自定义规则来验证它们

$this->form_validation->set_rules('list_facility', 'Facility List', 'callback_facility_validation');

public function facility_validation($array)
{
   if ($array == NULL) {
      $this->form_validation->set_message('facility_validation', 'Fasilitas tidak boleh kosong (minimal = 1)');
      return FALSE;
   } else {
      return TRUE;
   }
}

错误条件是正确的,每当我将复选框保留为空时,它都会返回消息。但是,如果我尝试选中一个或多个复选框,则会不断收到错误消息。

我尝试将var_dump我的list_facility变量,我已经得到我想要的。如果未选中任何复选框,或者我选中的每个复选框都为一个ID数组,则为NULL。

我已经在另一个控制器中实现了custoiom验证,并且效果很好

1 个答案:

答案 0 :(得分:0)

您的表单输入字段是数组,因此您的validate字段也必须是数组。应该是

$this->form_validation->set_rules('list_facility[]', 'Facility List', 'callback_facility_validation');

list_facility[]而不是list_facility

我已经尝试过并且可以正常工作。希望对您有帮助