【问题标题】:Codeigniter validation library store errors in sessionCodeigniter 验证库在会话中存储错误
【发布时间】:2013-04-30 10:20:15
【问题描述】:

我正在使用 Codeigniter 提供的验证库。
我的 Web 应用程序使用会话和 javascript 来填充警报消息。

因此,我希望我的错误消息采用 json 格式。
但是辅助函数validation_errors()只输出html格式。

我能做什么?

if ($this->form_validation->run() == FALSE)
            {
                add_flash_message('alert', $flash_in_json);
                redirect('enquiry/create');
            }

【问题讨论】:

    标签: php javascript codeigniter session


    【解决方案1】:

    我认为正确的解决方案是扩展 CI_Form_valuidation 类以将 getter 添加到受保护的变量 $_error_array..

    Class MY_Form_validation extends CI_Form_validation {
       function getErrorsArray(
           return $this->$_error_array;
       )
    }
    

    【讨论】:

    • +1 用于使用错误数组。除此之外,数组中项目的格式是'field name' => 'Error message'。您可以使用 json_encode() 将其转换为 json。请记住,错误可能不止一个,因此您可能需要将 add_flash_message() 包装在 foreach 循环中或修改它以接受数组而不是单个错误。
    【解决方案2】:

    这是一个将validation_errors()输出转换为json的函数

    function prep_validation_errors($errors){
            $str = str_replace('</p>', '', $errors);
            $arr = explode('<p>', $str);
            return json_encode($arr);
        }
    

    那么你可以像下面这样使用它:

    $json = $this->prep_validation_errors(validation_errors());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-13
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      相关资源
      最近更新 更多