【问题标题】:Passing multiple callback in Code Igniter form validation rules在 Code Igniter 表单验证规则中传递多个回调
【发布时间】:2016-08-24 16:12:29
【问题描述】:

我想在 codeigniter 表单验证规则中传递多个回调......但只有一个回调起作用

我在我的控制器中使用这个语法

$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;
      }

}

请有人帮我解决这个问题....有关在表单验证规则中传递多个回调的任何其他解决方案也值得赞赏...

【问题讨论】:

  • 为什么不在另一个回调函数中调用验证函数?

标签: php forms codeigniter validation


【解决方案1】:

可能是这样的?

     $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;
       }

 }

【讨论】:

    【解决方案2】:

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

    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;
    }
    

    【讨论】:

    • 不,$str 和 $param 不是同一个值。我在比较 $str > $param.
    • 我仅以相等为例。替换您选择的条件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多