2014-11-23 81 views
0

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

例如,

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

+0

如果您添加一些代码来更好地解释您的问题,那将是最好的。 – 2014-11-23 12:04:51

回答

3

据我所知,CI不来这个开箱即用,但它是很容易实现:

首先,(如果没有这个文件已经)在应用程序中创建文件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()

或者访问此,您可以创建(如果该文件不存在)创建一个名为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); 
    } 
} 

希望这有助于!