ci表单验证
2016-11-02 23:32
211 查看
做ci的表单验证中间遇到了几个坑,下面做一下总结以便查阅
view:validate_view.php
controller:validate.php
class Validate extends MY_Controller
{
//构造器
public function __construct()
{
parent::__construct();
$this->load->model('validate_model');
$this->load->helper(array('form'));//输出错误信息和表单数据回显需要
$this->load->library('form_validation');//表单验证需要加载
}
/**
* 显示演示页面
*/
public function index()
{
$this->load->view('/validate/validate_view');
}
public function save()
{
// 后端数据验证
$this->form_validation->set_rules('logname', '登录名', 'trim|strip_tags|required|min_length[5]|max_length[10]');//设置登录名的验证规则
$this->form_validation->set_rules('logpw', '登录密码', 'trim|strip_tags|required|min_length[6]|max_length[10]');//设置登录密码的验证规则
$this->form_validation->set_rules('relogpw', '确认密码', 'trim|strip_tags|required|min_length[6]|max_length[10]|matches[logpw]');//再次登录密码的验证规则
$this->form_validation->set_rules('orgemail', '邮箱地址', 'trim|strip_tags|required|valid_email');//邮箱的验证规则
$this->form_validation->set_rules('orgcontactor', '手机号码',array('required','regex_match[/^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(14[0-9]{1}))+\d{8})$/]'));
$this->form_validation->set_rules('orgphone', '电话号码',array('required','regex_match[/^(?:(?:0\d{2,3})-)?(?:\d{7,8})(-(?:\d{3,}))?$/]'));
$this->form_validation->set_error_delimiters('<span>', '</span>');//设置错误信息显示的定界符默认以<p>为定界符
$this->form_validation->set_message('required', '{field}不能为空');//自定义错误提示信息
$this->form_validation->set_message('min_length', '{field}长度不能小于{param}');
$this->form_validation->set_message('max_length', '{field}长度不能大于{param}');
$this->form_validation->set_message('valid_email', '{field}格式有误');
$this->form_validation->set_message('regex_match', '{field}格式有误');
if($this->form_validation->run() == FALSE){ //数据校验失败重回view页
$this->load->view("/validate/validate_view");
}else{
//数据校验成功收集数据入库
}
}
}
相关说明:
1.set_rules有三个参数 第一个参数是待校验元素的name值, 第二个参数为给待校验元素起的个性化名可以在错误信息中显示,第三个参数为校验规则
测试中requied规则是必须的即不能省, 当用正则表达式做验证规则时必须写成数组的形式否则会报错如图所示
2.set_message第一个参数为验证规则 第二个参数为验证失败时要显示的错误信息 {field}会取代待校验元素的个性化名
如果不自定义错误信息会显示默认错误信息 /system/language/english/form_validation_lang.php想更改默认错误信息参照ci的语言类
3.view 端的set_value('elementname')验证失败后重回validate_view时回显提交的name=elementname元素的value值
4.form_error('elementname')验证失败后重回validate_view时输出name=elementname元素的校验错误信息
5.别忘了控制器里 $this->load->helper(form);//输出错误信息和表单数据回显需要
$this->load->library('form_validation');//表单验证需要加载
view:validate_view.php
controller:validate.php
class Validate extends MY_Controller
{
//构造器
public function __construct()
{
parent::__construct();
$this->load->model('validate_model');
$this->load->helper(array('form'));//输出错误信息和表单数据回显需要
$this->load->library('form_validation');//表单验证需要加载
}
/**
* 显示演示页面
*/
public function index()
{
$this->load->view('/validate/validate_view');
}
public function save()
{
// 后端数据验证
$this->form_validation->set_rules('logname', '登录名', 'trim|strip_tags|required|min_length[5]|max_length[10]');//设置登录名的验证规则
$this->form_validation->set_rules('logpw', '登录密码', 'trim|strip_tags|required|min_length[6]|max_length[10]');//设置登录密码的验证规则
$this->form_validation->set_rules('relogpw', '确认密码', 'trim|strip_tags|required|min_length[6]|max_length[10]|matches[logpw]');//再次登录密码的验证规则
$this->form_validation->set_rules('orgemail', '邮箱地址', 'trim|strip_tags|required|valid_email');//邮箱的验证规则
$this->form_validation->set_rules('orgcontactor', '手机号码',array('required','regex_match[/^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(14[0-9]{1}))+\d{8})$/]'));
$this->form_validation->set_rules('orgphone', '电话号码',array('required','regex_match[/^(?:(?:0\d{2,3})-)?(?:\d{7,8})(-(?:\d{3,}))?$/]'));
$this->form_validation->set_error_delimiters('<span>', '</span>');//设置错误信息显示的定界符默认以<p>为定界符
$this->form_validation->set_message('required', '{field}不能为空');//自定义错误提示信息
$this->form_validation->set_message('min_length', '{field}长度不能小于{param}');
$this->form_validation->set_message('max_length', '{field}长度不能大于{param}');
$this->form_validation->set_message('valid_email', '{field}格式有误');
$this->form_validation->set_message('regex_match', '{field}格式有误');
if($this->form_validation->run() == FALSE){ //数据校验失败重回view页
$this->load->view("/validate/validate_view");
}else{
//数据校验成功收集数据入库
}
}
}
相关说明:
1.set_rules有三个参数 第一个参数是待校验元素的name值, 第二个参数为给待校验元素起的个性化名可以在错误信息中显示,第三个参数为校验规则
测试中requied规则是必须的即不能省, 当用正则表达式做验证规则时必须写成数组的形式否则会报错如图所示
2.set_message第一个参数为验证规则 第二个参数为验证失败时要显示的错误信息 {field}会取代待校验元素的个性化名
如果不自定义错误信息会显示默认错误信息 /system/language/english/form_validation_lang.php想更改默认错误信息参照ci的语言类
3.view 端的set_value('elementname')验证失败后重回validate_view时回显提交的name=elementname元素的value值
4.form_error('elementname')验证失败后重回validate_view时输出name=elementname元素的校验错误信息
5.别忘了控制器里 $this->load->helper(form);//输出错误信息和表单数据回显需要
$this->load->library('form_validation');//表单验证需要加载