1.在填写表单的页面//wechat_query
<form name="query" id="form_sub" action="<?php echo extend_url('/wechat/query');?>" method="post">
<?php echo validation_errors(); ?>
姓名: <input type="text" name="userName" id="userName"/>
手机: <input type="text" name="phoneNum" id="phoneNum"/>
邮箱: <input type="text" name="userEmail" id="userEmail"/>
公司: <input type="text" name="companyName" id="companyName"/>
<input type="submit" value="立即查询帐号"/>
</form>
2.在接收表单数据的页面
private function check_form()
{
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
$this->form_validation->set_rules('userEmail', 'userEmail', 'required|valid_emails');
$this->form_validation->set_rules('userName', 'userName', 'required');
$this->form_validation->set_rules('phoneNum', 'phoneNum', 'required|integer');
$this->form_validation->set_rules('companyName', 'companyName', 'required');
if ($this->form_validation->run() == FALSE)
{
return false;
}
else
{
return true;
}
3. 接收 返回值,判断是否通过
$flag=$this->check_form();
if(!$flag){
$this->showview('wechat_query');
}else{
//通过验证
}
说明:
更改错误定界符
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');//统一更改
- <?php echo form_error('field name', '<div class="error">', '</div>'); //单独更改
- <?php echo validation_errors('<div class="error">', '</div>'); ?> / /单独更改
独立显示错误
<h5>Username</h5>
<?php echo form_error('username'); ?>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
<h5>Password</h5>
<?php echo form_error('password'); ?>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />
<h5>Password Confirm</h5>
<?php echo form_error('passconf'); ?>
<input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" />
<h5>Email Address</h5>
<?php echo form_error('email'); ?>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />
设置错误信息
$this->form_validation->set_message('required', '请输入%s');
$this->form_validation->set_message('valid_emails', '%s格式不正确');
$this->form_validation->set_message('integer', '%s格式不正确');
如果你在错误信息中包含了
%s,它将插入显示出你在表单域中设置的别名。
重新填充表单
<body>
<?php echo validation_errors(); ?>
<?php echo form_open('form'); ?>
<h5>Username</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
<h5>Password</h5>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />
<h5>Password Confirm</h5>
<input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" />
<h5>Email Address</h5>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />
<div><input type="submit" value="Submit" /></div>
</form>
</body>
自己的验证函数:
检测用户名的唯一性特别有用
$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
<?php
class Form extends CI_Controller {
function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}
function username_check($str)
{
if ($str == 'test')
{
$this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
return FALSE;
}
else
{
return TRUE;
}
}
}
?>
使用数组设置验证规则,可以保存到配置文件里
$config = array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required'
),
array(
'field' => 'passconf',
'label' => 'Password Confirmation',
'rules' => 'required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'required'
)
);
$this->form_validation->set_rules($config);
更多用法请参考CI手册。