1、CodeIgniter容许你为单个表单域建立多个验证规则,按顺序层叠在一块儿,你甚至能够同时预先处理表单域数据。要设置验证规则请使用set_rules() 函数:php
上面的函数使用 三个 参数做为输入:html
$this->form_validation->set_rules('username', 'Username', 'required'); $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');
上面是一段示例代码。数组
<?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', 'required'); $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'); } } } ?>
控制器的内容如上。xss
2、使用数组设置验证规则:函数
$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);
3、级联规则:post
$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]'); $this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]'); $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required'); $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
上面的代码设置了一组规则:ui
4、预处理数据this
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean'); $this->form_validation->set_rules('password', 'Password', 'trim|required|matches[passconf]|md5'); $this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required'); $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
在上面的例子里,咱们“修整(trimming,去掉字符串两端空白)”了数据,转换密码为MD5,将用户名经过“xss_clean”函数处理去掉了有害数据。url
任何PHP自身接收一个参数的函数均可以被用做一个规则,好比 htmlspecialchars, trim, MD5, 等。spa
5、从新填充表单
set_value('field name')
不要忘记在set_value()函数中包含每一个表单域的名字!
<html> <head> <title>My Form</title> </head> <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> </html>
6、设置错误信息
$this->form_validation->set_message('rule', 'Error Message');
你也能够重写语言文件中的错误信息. 例如, 你能够这么作来改变"required" 规则的信息:
$this->form_validation->set_message('required', 'Your custom message here');
7、更改错误定界符
在默认状况下,表单验证类会使用 (<p>) 标签来分割每条错误信息,以达到分段效果。你能够自行对其进行定义。
若是须要全局更改错误定界符, 能够在你的控制器中,在表单验证类加载以后添加以下代码:
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
在此例中,咱们将定界符由系统默认的 <p> 更改成一个div标签。
表单验证类所提供的两种显示错误验证信息的函数,分别能够经过以下方法来设置它们的定界符:
<?php echo form_error('field name', '<div class="error">', '</div>'); ?>
或者:
<?php echo validation_errors('<div class="error">', '</div>'); ?>