2014-11-23 66 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); 
    } 
} 

希望這有助於!