|
本帖最后由 Martix 于 2017-3-20 15:40 编辑
CI的表单验证还是很舒服的一个验证机制,最近在做一个小的博客吧,所以就用到了这个,感觉很不错就发上来给大家看看, 首先是配置的验证数组到一个单独的文件中,叫做 form_validation.php,放到config文件中,这样控制器代码就可以如下引用:
PHP复制代码
//接收POST参数
$this->load->library('form_validation');
if ($this->form_validation->run('customer/add') == FALSE)
{
exit(json_encode(array('status'=>false,'tips'=>validation_one_errors ())));
}
复制代码
validation_one_errors()是我自定义的一个函数,返回错误信息中的第一个错误信息,而不是CI自带的那个validation_errors() 返回所有的错误信息了,这样ajax返回数据就方便了.
然后图上那个is_chinese 是我自定义的方法放在了 helpers 文件夹中的一个文件(func_helper.php)
PHP复制代码
if(!function_exists('is_chinese'))
{
/**
* 是否为中文
* @param string $str
* @return boolean
*/
function is_chinese ($str){
if(preg_match('/^[\x{4e00}-\x{9fa5}]+$/u',$str))
return true;
else
return false;
}
}
复制代码
可以选择手动加载,或者是自动加载,自动加载就在 config 文件夹下的 autoload.php 文件中 修改 $autoload['helper'] = array('func')这个键值,
最后就是在错误信息中配置错误信息了.这里我引入的是中文包 所以就在 application\language\chinese\form_validation_lang.php 添加错误信息即可如下:
PHP复制代码
$lang['form_validation_is_chinese'] = '{field} 请输入汉字.';
复制代码
PS:感谢hex,本来准备改form_validation 中 run 的方法,后来放弃了.
获取第一个错误信息 我写在了系统 system\helpers\form_helper.php 中,在856左右能看到 validation_errors() 获取所有错误信息的函数
PHP复制代码
if ( ! function_exists('validation_one_errors'))
{
/**
* Validation Error first error
* 获取验证函数的 第一个验证错误
*
* @param string
* @param string
* @return string
*/
function validation_one_errors ()
{
if (FALSE === ($OBJ =& _get_validation_object ()))
{
return '';
}
$error_array = $OBJ->error_array();
if(!empty($error_array)){
return current($error_array); //返回第一个错误
}
return '';
}
}
复制代码
|
评分
-
查看全部评分
|