使用codeingiter

时间:2017-12-28 08:17:23

标签: php codeigniter validation email-validation

您好我正在尝试为我的表单创建验证回调,以便仅在字段不为空时才验证该字段。我将验证规则创建到名为 form_validation.php 的配置文件中。 以下是其内容的一部分:

$config=array(
  'Users_Controller/add'=>array(
        array(
            'field'=>'email',
            'label'=>'email',
            'rules'=>'callback_email'
        ),
   )
);

public function email($value){
   if( trim( strlen($value) )!==0 ){
      $this->form_validation->set_rules(
         'email',
         'email',
         'valid_email|is_unique[users.email]',
          array(
             'valid_email'=>'invalid email',
             'is_unique' => 'email already registered'
         )
      )
   }
}

在我的控制器中,在 users_Controller.php 中,这是我处理表单提交的方式:

class Users_Controller  extends CI_Controller{
     public function add(){
         if($this->form_validation->run()){
              $this->User_model->save();
              $this-session->set_flashdata('success','okay');
              redirect('users/list');
         }
         else {
              $this->load->view('add')
         }
     }
}

不幸的是,验证没有考虑我在配置文件 form_validation.php 中添加的回调验证方法,但是如果我将此回调放在控制器中,则验证过程会忽略所有其他规则在 form_validation.php

中加入

有任何帮助吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

希望这可以帮助您

<强> form_validation.php

/html/memo/

将回调方法放入Users_controller.php

在Users_controller.php中

/*put callback rule in form_validation.php*/

$config=array(
   'Users_Controller/add'=>array(
    array(
        'field'=>'email',
        'label'=>'email',
        'rules'=>'callback_check_email'
    ),
  )
);

}

更多信息:https://www.codeigniter.com/user_guide/libraries/form_validation.html#callbacks-your-own-validation-methods

答案 1 :(得分:0)

要调用特定的验证规则组,例如Users_Controller/add,您需要将组名传递给run()方法。
Users_controller.php

    ...
    public function add(){
        if($this->form_validation->run('Users_Controller/add')){
        ...
    }
    ...

要使验证回调正常工作,您必须将回调方法放在调用回调的方法的同一个控制器中。