如何在数组中获取验证错误?

时间:2011-08-18 15:03:00

标签: php codeigniter validation

我正在使用Codeigniter开发REST API。 我需要以数组格式从表单验证中获取所有错误消息 我可以轻松地使用JSON或XML进行响应。

现在Codeigniter以<p>作为分隔符传递错误消息(见下文) 但这对基于REST的API来说并不好。

<p>There was an error with this item</p>

如何在数组中获取错误?

感谢所有输入!

2 个答案:

答案 0 :(得分:1)

您可以轻松转换它:

/**
 * @param $errors string
 * @return array
 */
function transformErrorsToArray ($errors) {
    $errors = explode('</p>', $errors);
    foreach ($errors as $index => $error) {
        $error = str_replace('<p>', '', $error);
        $error = trim($error);
        // ... more cleaning up if necessary
        $errors[$index] = $error
    }
    return $errors;
}

答案 1 :(得分:1)

表单验证库将错误存储在数组中并循环遍历它们以生成错误字符串。它们存储在名为$_error_array的私有变量中。您可以使用返回错误数组的简单方法扩展库。

class MY_Form_validation extends CI_Form_validation
{
    function get_error_array()
    {
        return $this->_error_array;
    }
}

我假设您熟悉扩展核心CI库,但是表单验证库的这个扩展将为您提供一种方法,将错误作为数组返回,并将name属性的值作为键,将消息作为值。我在我的一个项目上测试了它并且工作正常。