class Form extends CI_Controller {
public function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[3]|max_length[15]|callback_username_check'); //вызываем собственную функцию
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsuccess');
}
}
//собственное правило для проверки
public function username_check($str)
{
//что-нибудь проверяем...
}
}
要检查这样的用户是否已经在数据库中,您可以使用标准的
is_unique
Codeigniter 验证库。例如,如果用户存储在表中users
,并且字段名称username
验证规则本身可以通过分隔
|
. 例如:您可以将规则作为数组传递:
请记住,
is_unique
只有在 Query Builder 配置文件中启用了 Codeigniter 类时,它才有效。但是您始终可以通过回调创建自己的验证规则。向控制器添加一个新函数,并将其作为带有回调前缀的验证规则调用:您还可以在函数中设置自己的错误消息。您还可以处理传递给回调函数的表单数据并将其返回。如果 cllback 返回非布尔值 TRUE/FALSE,则假定数据会再次被处理。您也可以使用其他地方的方法,例如:
我们使用
exist_user()
来自Users_model
对象的方法。你也可以只使用匿名函数:调用的规则本身不是字符串,也不是规则。在为它们创建错误消息时,这是一个问题。要解决这个问题,可以将规则放在数组的第二个元素中,其中第一个是规则的名称:
使用匿名函数: