一、CodeIgniter允許你爲單個表單域創建多個驗證規則,按順序層疊在一起,你甚至可以同時預先處理表單域數據。要設置驗證規則請使用set_rules() 函數:
上面的函數使用 三個 參數作爲輸入:
表單域的名字 - 就是你給表單域取的那個名字。
一個此表單域的 "人性化" 名字,它將被插入到錯誤信息中。例如,如果你有一個表單域叫做“user”你可能給它一個人性化名字叫做“用戶名”。 注意: 如果你想讓表單域的名字保存在一個語言文件裏。
爲此表單域設置的驗證規則。
$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');
}
}
}
?>
控制器的內容如上。
二、使用數組設置驗證規則:
$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);
三、級聯規則:
$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');
上面的代碼設置了一組規則:
用戶名錶單域長度不得小於5個字符以及大於12個字符。
密碼錶單域必須跟密碼確認表單域的數據一致。
電子郵件表單域必須是一個有效郵件地址。
四、預處理數據
$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”函數處理去掉了有害數據。
任何PHP自身接收一個參數的函數都可以被用作一個規則,比如 htmlspecialchars, trim, MD5, 等。
五、重新填充表單
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>
六、設置錯誤信息
$this->form_validation->set_message('rule', 'Error Message');
你也可以重寫語言文件中的錯誤信息. 例如, 你可以這麼做來改變"required" 規則的信息:
$this->form_validation->set_message('required', 'Your custom message here');
七、更改錯誤定界符
在默認情況下,表單驗證類會使用 (<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>'); ?>