仅显示第一个错误

时间:2014-11-23 06:13:47

标签: codeigniter validation

我使用代码点火器form_validation类来执行许多验证,因为codeigniter验证了所有字段,然后显示了所有错误的列表,我需要将其限制为仅显示发生的第一个错误。

例如

如果我有2个(电子邮件,消息)字段,并且required验证到位,并且我将这两个字段留空。我需要codeigniter才能显示错误电子邮件字段是必需的。

1 个答案:

答案 0 :(得分:4)

据我所知,CI没有开箱即用,但它很容易实现:

首先,(如果您还没有此文件)使用以下内容在 application / libraries / 中创建文件MY_Form_validation.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Form_validation extends CI_Form_validation {

    public function __construct($rules = array())
    {
        parent::__construct($rules);
    }
}

然后将以下方法添加到该类:

 /**
 * First Error
 *
 * Returns the first error messages as a string, wrapped in the error delimiters
 *
 * @access  public
 * @param   string
 * @param   string
 * @return  str
 */
public function first_error($prefix = '', $suffix = '')
{
    // No errrors, validation passes!
    if (count($this->_error_array) === 0)
    {
        return '';
    }

    if ($prefix == '')
    {
        $prefix = $this->_error_prefix;
    }

    if ($suffix == '')
    {
        $suffix = $this->_error_suffix;
    }

    // Generate the error string
    $str = '';
    foreach ($this->_error_array as $val)
    {
        if ($val != '')
        {
            return $prefix.$val.$suffix."\n";
        }
    }

    return $str;
}

这样您就可以使用$this->form_validation->first_error()

访问此内容

或者,您可以创建类似于validation_errors()的辅助函数(如果文件不存在),在 application / helpers / <中创建名为MY_form_helper.php的文件/ p>

然后添加以下代码:

/**
 * First Validation Error String
 *
 * Returns the first error associated with a form submission.  This is a helper
 * function for the form validation class.
 *
 * @access  public
 * @param   string
 * @param   string
 * @return  string
 */
if ( ! function_exists('first_validation_error'))
{
    function first_validation_error($prefix = '', $suffix = '')
    {
        if (FALSE === ($OBJ =& _get_validation_object()))
        {
            return '';
        }

        return $OBJ->first_error($prefix, $suffix);
    }
}

希望这有帮助!