在codeigniter中使用表单验证中的多个回调

时间:2012-05-28 06:11:20

标签: codeigniter

我将表单验证规则的逻辑分离到库中。我想在单个表单元素上应用多个回调函数。

$this->form_validation->set_rules('email', 'email', 'callback_db_check|callback_valid_email');          

现在我不知道该怎么做。因为它不工作我的意思是多个回调不起作用。但如果我定义单个回调它的工作正常。

function db_check(){
    $this->CI->form_validation->set_message('db_check', 'Not found in db');
}

function valid_email(){
    $this->CI->form_validation->set_message('db_check', 'Invalid email');
}

这只是示例代码。我有扩展的表单验证库,以便我可以从我的库中定义和调用验证逻辑。有什么建议我怎么做?

2 个答案:

答案 0 :(得分:3)

$this->CI->form_validation->set_rules('email' , 'Email' , 'required|valid_email|max_length[255]|callback_email|callback_call_db'); 

P.S。你的回调应该总是返回true或false(你的例子不会返回任何东西)

答案 1 :(得分:3)

您可以在单个元素中应用多个回调函数

可以使用格式

设置验证规则

$this->form_validation->set_rules('email', 'email', 'callback_db_check|callback_valid_email');

并且回调函数必须返回true或false。

function db_check($user) 
     {

        $sql=$this->db->query("select * from user where email like '%$user%' ");
        if($sql->num_rows()>0)
        {
             return true;
        }
             else
        {

        $this->form_validation->set_message('db_check', 'Not found in db');
        return FALSE;
        }

     }




 function valid_email($user) 
      {


            if(//condition)
            {
                 return true;
            }
                      else
            {

            $this->form_validation->set_message('valid_email', 'In valid email');
            return FALSE;
            }

      }

在用户方

<div class="field_main">
<div class="fi_title">E-Mail Address *:</div>
<input type="text" id="email" name="email"  value="<? echo set_value('email');?>" class="field_class" />
<? echo form_error('email','<div class="error">', '</div>');?>
</div>