【问题标题】:valiadate unique value using callback function in edit function in codeigniter在codeigniter的编辑函数中使用回调函数验证唯一值
【发布时间】:2014-12-24 12:07:25
【问题描述】:

在我正在检查唯一电子邮件的编辑表单中,如果用户单击提交按钮仍然显示错误消息,因为它不是唯一的。虽然它是独特的价值
这是控制器中的验证

$this->form_validation->set_rules('email','Email','required|callback_check_email');     

还有回调函数

function check_email($email)
    { 
        $return_value = $this->user_model->check_email($email);
        if ($return_value)
        {
            $this->form_validation->set_message('check_email', 'Sorry, This email is already used by another user please select another one');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }

这是用户模型

function check_email($email)
    {
        $id=$this->session->userdata('id');
        $this->db->select('Email');
        $query = $this->db->get_where('users',array('id !=' => $id,'Email' => $email));
        return $query->row_array();;
    }

【问题讨论】:

    标签: php sql codeigniter


    【解决方案1】:

    试试这个 -

    $this->form_validation->set_rules('email','Email','required|callback_check_email[email]'); 
    

    【讨论】:

      【解决方案2】:

      如果 check_email 函数仅用于验证,则应添加 _ 作为名称前缀,使其无法像私有函数一样供公共访问,并且不会通过 URL 请求提供服务:

      public function _check_mail($email)
      

      使用额外的_和电子邮件作为参数调用验证函数:

      $this->form_validation->set_rules('email','Email','required|callback__check_email[email]');
      

      还有一个额外的 _ 用于验证消息:

      $this->form_validation->set_message('_check_email', 'Sorry, This email is already used by another user please select another one');
      

      【讨论】:

        猜你喜欢
        • 2014-08-04
        • 2016-05-20
        • 2015-07-04
        • 1970-01-01
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        相关资源
        最近更新 更多