首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组中的Form_validation错误

数组中的Form_validation错误
EN

Stack Overflow用户
提问于 2011-01-13 04:55:45
回答 8查看 70.2K关注 0票数 17

我在我的CodeIgniter应用程序中有一个表单验证代码:

代码语言:javascript
复制
$this->load->library('form_validation');

$this->form_validation->set_rules('message', 'Message', 'trim|xss_clean|required');
$this->form_validation->set_rules('email', 'Email', 'trim|valid_email|required');

if($this->form_validation->run() == FALSE)
{
    // some errors
}
else
{
    // do smth
    $response = array(
        'message' => "It works!"
    );
    echo json_encode($response);
}

表单是基于AJAX的,因此前端必须接收带有表单错误的JSON数组,例如:

代码语言:javascript
复制
array (
  'email' => 'Bad email!',
  'password' => '6 symbols only!',
)

如何在CodeIgniter?中获得具有表单验证错误的列表或数组

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-13 05:04:14

你只需从你的控制器中回音validation_errors()

让您的javascript place它在您的视图。

PHP

代码语言:javascript
复制
// controller code
if ($this->form_validation->run() === TRUE)
{
    //save stuff
}
else
{
    echo validation_errors();
}

Javascript

代码语言:javascript
复制
// jquery
$.post(<?php site_url('controller/method')?>, function(data) {
  $('.errors').html(data);
});

如果您真的想使用JSON,jquery会自动解析JSON。您可以遍历它并将append循环到html中。

如果需要将验证错误作为数组,可以将此函数附加到form_helper.php中。

代码语言:javascript
复制
if (!function_exists('validation_errors_array')) {

   function validation_errors_array($prefix = '', $suffix = '') {
      if (FALSE === ($OBJ = & _get_validation_object())) {
        return '';
      }

      return $OBJ->error_array($prefix, $suffix);
   }
}
票数 21
EN

Stack Overflow用户

发布于 2011-12-17 04:20:07

应用程序/库/MY_Form_validation.php

代码语言:javascript
复制
<?php
class MY_Form_validation extends CI_Form_validation
{
  function __construct($config = array())
  {
    parent::__construct($config);
  }

  function error_array()
  {
    if (count($this->_error_array) === 0)
      return FALSE;
    else
      return $this->_error_array;
  }
}

然后,您可以从控制器中尝试以下操作:

代码语言:javascript
复制
$errors = $this->form_validation->error_array();

参考资料:错误作为数组

票数 34
EN

Stack Overflow用户

发布于 2013-04-30 18:55:53

如果您希望使用库方法,则可以对Form_validation类进行扩展。

代码语言:javascript
复制
class MY_Form_validation extends CI_Form_validation {

    public function error_array() {
        return $this->_error_array;
    }

}

然后在控制器/方法中调用它。

代码语言:javascript
复制
$errors = $this->form_validation->error_array();
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4676915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档