我有不同的建议,为了这个,我会推荐这
$this->form_validation->set_rules('email', 'Email', 'required|max_length[32]|valid_email|callback_email_available');
同时提交您需要定义规则的形式。始终使用回调来与数据库进行交互
控制器回调方法
public function email_available($str)
{
// You can access $_POST variable
$this->load->model('mymodel');
$result = $this->mymodel->emailAvailability($_POST['email']);
if ($result)
{
$this->form_validation->set_message('email_available', 'The %s already exists');
return FALSE;
}else{
return TRUE;
}
}
与模型方法
public function emailAvailability($email)
{
$this->db->where('email',$email);
$query = $this->db->get('tablename');
return $query->row();
}
这样你就永远避免正面数据库错误,并能得到用户看到的东西更好的方法。你不必处理数据库错误,因为表单验证正在为你处理所有事情。
我也使用这个功能。 BaseModel是个好主意,我想一想。谢谢。 IMO抛出异常方法与模型处理异常是有点困难,不透明。查询运行后,我需要立即处理简单的错误。比我需要做出决定依靠_error_number() – drnk 2009-04-09 13:44:04
这些不是构造函数,但很好的答案。 – Zack 2010-05-01 13:49:27