1

我为表单中的多个字段设置了相同的回调函数:

foreach($fields as $class => $i)
{
    ++$i;
    $validation->set_rules('car_' . $i . '_one', $class, 'trim|xss_clean|callback_validate_car_fields[TRUE]');
    $validation->set_rules('car_' . $i . '_twor', $class, 'trim|xss_clean|callback_validate_car_fields[FALSE]');
    $validation->set_rules('in_car_' . $i . '_one', $class, 'trim|xss_clean|callback_validate_car_fields[TRUE]');
    $validation->set_rules('in_car_' . $i . '_two', $class, 'trim|xss_clean|callback_validate_car_fields[FALSE]');
}

classvarialeCar在这种情况下是)

这是回调函数:

function validate_car_fields($input, $required)
{

    if ($required === "TRUE" && empty($input))
    {
        $this->form_validation->set_message('validate_car_fields', 'Field %s can not be empty!');
        return FALSE;
    }

    return TRUE;
}

它显示了双倍的错误:

* Field Car can not be empty!
* Field Car can not be empty!
* Field Car can not be empty!
* Field Car can not be empty!

在这种情况下,这是可以理解的行为,但我想每个字段名称只显示一个错误,而不是每个字段显示 4 个错误。如何做到这一点?

4

2 回答 2

1

试试这个

function validate_car_fields($input, $required)
{
    static $validation_failed_once = FALSE;

    if ($required === "TRUE" && empty($input))
    {
        // Return FALSE without setting error message from 2nd validation fail onwards
        if ($validation_failed_once) return FALSE;

        $this->form_validation->set_message('validate_car_fields', 'Field %s can not be empty!');
        // Set error message only for the first validation error
        $validation_failed_once = TRUE;
        return FALSE;
    }

    return TRUE;
}
于 2012-11-08T09:21:04.063 回答
1

它正在考虑使用新功能编辑或创建(扩展本机库) :libraries/MY_Form_validation.php

function remove_duplicate_errors() {

    $arr = array();
    foreach(array_keys($this->_error_array) as $h) {
        if (in_array($arr, $this->_error_array[$h]))
            unset($this->_error_array[$h]);
        else $arr[] = $this->_error_array[$h];
    }

}

$this->form_validation->remove_duplicate_errors();并在完成后调用$this->form_validation->run()。这应该删除字符串相同的所有情况。但是请在您的设计中考虑另一种方法,因为了解这 4 种方法中的哪一种不正确可能会很有用。

于 2012-11-08T10:04:04.950 回答