【问题标题】:Codeigniter helper function to validation rules验证规则的 Codeigniter 辅助函数
【发布时间】:2011-07-15 19:43:07
【问题描述】:

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

【问题讨论】:

  • 您是否尝试将valid_user 函数添加到运行form_validation 的控制器?
  • 另外看来,在你的set_rules 中,你必须根据codeigniter.com/user_guide/libraries/… 设置callback_valid_user 而不是valid_user
  • @user:你们的两个cmets都会去解决问题;将它们添加为答案,而不是 cmets!
  • duuuuuuuuuuuude 不要将函数声明包装在 if 语句中。这不是一个好习惯。
  • @FinalForm,为什么不呢?你的意思是if ( ! function_exists('valid_user')) 吗? Codeigniter 辅助函数也是这样包装的。

标签: php forms validation function codeigniter


【解决方案1】:

在我之前的经验中,我通常在调用回调的相同位置添加一个验证函数(在您的情况下为valid_user)。

例如,我会将 valid_user 方法放在 users_controller 中,其中一种注册方法将调用 valid_user 方法。

此外,根据 Codeigniter 用户指南,您似乎必须在 set_rules 中设置 callback_valid_user 而不是 valid_user

http://codeigniter.com/user_guide/libraries/form_validation.html#callbacks

【讨论】:

  • 看来我必须在控制器的一个函数中返回辅助函数,然后将该函数用作验证中的回调。我的其他一些助手在验证规则中工作,而不使用 callback_ 。我只是直接添加函数名称。我不知道为什么。
【解决方案2】:
$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_                                     ↑

【讨论】:

  • 这不是控制器内的回调,我在帮助文件中有这个函数。
猜你喜欢
  • 2011-03-19
  • 2011-10-17
  • 2014-01-23
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
相关资源
最近更新 更多