我使用代码点火器form_validation类来执行许多验证,因为codeigniter验证了所有字段,然后显示了所有错误的列表,我需要将其限制为仅显示发生的第一个错误。
例如
如果我有2个(电子邮件,消息)字段,并且required
验证到位,并且我将这两个字段留空。我需要codeigniter才能显示错误电子邮件字段是必需的。
答案 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);
}
}
希望这有帮助!