【问题标题】:Show the first error only仅显示第一个错误
【发布时间】:2014-11-23 06:13:46
【问题描述】:

我正在使用 code igniter form_validation 类来执行一些验证,因为 codeigniter 会验证所有字段,然后显示所有错误的列表,我需要将其限制为仅显示发生的第一个错误。

例如。

如果我有 2 个(电子邮件、消息)字段并带有 required 验证,并且我要将两个字段都留空。我需要 codeigniter 来仅显示错误 The Email Field is required。

【问题讨论】:

  • 最好添加一些代码来更好地解释您的问题。

标签: codeigniter validation


【解决方案1】:

据我所知,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-&gt;form_validation-&gt;first_error()访问它

或者,您可以通过(如果文件不存在)在 application/helpers/

中创建一个名为 MY_form_helper.php 的文件来创建类似于 validation_errors() 的辅助函数

然后添加以下代码:

/**
 * 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);
    }
}

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2013-01-23
    • 2012-06-04
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多