2016-04-29 51 views
2

我想通过在笨表单验证规则多个回调传递多个回调....但只有回调工作在代码点火器表单验证规则

我用这句法中位指示我的一个

$this->form_validation->set_rules(   
       array(
        'field' => 'field_name', 
        'label' => 'Field Name', 
        'rules' => 'callback_fieldcallback_1|callback_fieldcallback_2[param]', 
        'errors' => array(
         'fieldcallback_1' => 'Error message for rule 1.', 
         'fieldcallback_2' => 'Error message for rule 2.', 
         ) 
        ), 
       ); 

和回调函数是....

function fieldcallback_1(){ 
     if(condition == TRUE){ 
       return TRUE; 
     } else { 
       return FALSE; 
     } 

} 

function fieldcallback_2 ($param){ 
     if(condition == TRUE){ 
       return TRUE; 
     } else { 
       return FALSE; 
     } 

} 

有人请帮我解决这个问题....任何其他的解决方案就经过多次回调在表格验证规则也赞赏...

+0

为什么不叫另一个回调函数内部验证的功能呢? –

回答

1

所有验证例程必须至少有一个参数,它是要验证字段的值。所以,没有额外参数的回调应该像这样定义。

function fieldcallback_1($str){ 
     return ($str === "someValue"); 
} 

需要两个参数的回调定义这样

function fieldcallback_2 ($str, $param){ 
    //are they the same value? 
    if($str === $param){ 
     return TRUE; 
    } else { 
     $this->form_validation->set_message('fieldcallback_2', 'Error message for rule 2.'); 
     //Note: `set_message()` rule name (first argument) should not include the prefix "callback_" 
     return FALSE; 
} 
+0

不,$ str和$ param不是相同的值。我比较$ str> $ param。 – besrabasant

+0

我只用平等作为例子。替换您选择的条件。 – DFriend

0

也许这样?

 $this->form_validation->set_rules(   
      array(
       'field' => 'field_name', 
       'label' => 'Field Name', 
       'rules' => 'callback_fieldcallback_1[param]'), 
    ); 

    // Functions for rules 
    function fieldcallback_1 ($param){ 
     if(condition == TRUE){ 
       return fieldcallback_2($param); 
     } else { 
       $this->form_validation->set_message('callback_fieldcallback_1', 'Error message for rule 1.'); 

       return FALSE; 
     } 

} 

function fieldcallback_2 ($param){ 
     if(condition == TRUE){ 
       return TRUE; 
     } else { 
       $this->form_validation->set_message('callback_fieldcallback_1', 'Error message for rule 2.'); 
       return FALSE; 
     } 

}