Codeigniter帮助函数验证规则

时间:2011-07-15 19:43:07

标签: php forms validation function codeigniter

我创建了一个帮助程序,用于检查我的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功能。我在这里做错了什么?

2 个答案:

答案 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_                                     ↑