我创建了一个帮助程序,用于检查我的user
数据库表中是否存在用户ID:
if ( ! function_exists('valid_user'))
{
function valid_user($user_id)
{
$ci=& get_instance();
$ci->load->database();
$ci->db->select('id');
$ci->db->where('id', $user_id);
$ci->db->where('activated', 1);
$ci->db->where('banned', 0);
$ci->db->limit(1);
$query = $ci->db->get('users');
if ($query->num_rows() > 0) //if user exists
{
return TRUE;
}
else
{
return FALSE;
}
}
}
我将此功能添加到验证规则中,如此
$this->form_validation->set_rules('user_id', 'User ID', 'required|xss_clean|max_length[11]|is_natural_no_zero|valid_user');
它不执行valid_user
功能。我在这里做错了什么?
答案 0 :(得分:1)
根据我之前的经验,我通常会在调用回调的同一个地方添加一个验证函数(在您的情况下为valid_user
)。
例如,我会将valid_user
方法放在users_controller中,其中一个注册方法将调用valid_user
方法。
此外,您的set_rules
似乎必须根据Codeigniter用户指南设置callback_valid_user
而不是valid_user
。
http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks
答案 1 :(得分:0)
$this->form_validation->set_rules('user_id', 'User ID',
'required|xss_clean|max_length[11]|is_natural_no_zero|callback_valid_user');
//note the callback_ ↑