【问题标题】:form validation code igniter doesn't work表单验证代码点火器不起作用
【发布时间】:2017-11-04 12:17:42
【问题描述】:

我是在 codeigniter 中使用表单验证的初学者,现在我正在尝试使用表单验证 codeigniter 库,为什么不执行?我已经在控制器顶部加载了$this->load->library('form_validation');。我的意思是我想要将错误置于我的输入类型之下的输出。为什么我在array('required' => 'Error Message on rule2 for this field_name')); 中的错误没有出现在我的视图中。仅在控制台响应

这是我的完整代码:

查看:

<div class="modal fade large" id="admin_create_acct" role="dialog">
  <div class="modal-dialog"> 
    <div class="modal-content">
      <div class="modal-header  btn-success">
               <button type="button" class="close" data-dismiss="modal">&times;</button>
               <h3 class="modal-title">Create Account</h3>
            </div>
            <div class="modal-body">
<form class="form-horizontal" id="frm_create_user">
                <div class="form-group">
              <label for="userFName" class="control-label col-sm-4">First Name:</label>
              <div class="col-sm-6">
                <input type="text" class="form-control" name="userFName" id="userFName" placeholder="First name">
                 <div class="msg"></div><!-- form-group -->
              </div><!-- col-sm-6 -->
            </div><!-- form-group -->
            <div class="form-group">
              <label for="userMName" class="control-label col-sm-4">Middle Name:</label>
              <div class="col-sm-6">
                <input type="text" class="form-control" name="userMName" id="userMName" placeholder="Middle name">
                <div class="msg"></div><!-- form-group -->
              </div><!-- col-sm-6 -->
            </div><!-- form-group -->
 </form><!-- form-horizontal -->
<button type="button" id="btn_reg" onclick="create_User()" class="btn btn-primary">Create Account</button>

我只是在尝试一种输入类型和一些验证错误,现在这是我的控制器代码:

public function reg_user(){

       $this->form_validation->set_rules('userFName', 'userFName', 'trim|required',
    array('required' => 'Error Message on First name ')
    );

    $this->form_validation->set_rules('userMName', 'userMName', 'trim|required',
    array('required' => 'Error Message on Middle Name')
    );

   if ($this->form_validation->run() == FALSE) {
        $result['type'] = 'error';
        $result['message'] = validation_errors();
    }else {
       $result['type'] = 'success';
       $result['message'] = 'Whooos..! Your Succes Message';   
    }

    echo json_encode($result);  
}

我的 ajax 视图:

function create_User() {
   $.ajax({
      url: siteurl+"admin_controls/reg_user",
      type: "POST",
      data: $("#frm_create_user").serialize(),
      dataType: "JSON",
        success: function(data) {
          alert(" User Successfully Added added! ");
          $("#frm_create_user")[0].reset();
        }
   });
}

【问题讨论】:

    标签: php forms codeigniter validation


    【解决方案1】:

    请遵循此方法。 或者

    如果您只是复制并粘贴此代码,它肯定可以工作,您只需在表单操作中更改控制器名称

        public function reg_user(){
    
             $this->form_validation->set_rules('userFName', 'userFName', 'trim|required',
    array('required' => 'Error Message on First name ')
    );
    
              $this->form_validation->set_rules('userMName', 'userMName', 'trim|required',
    array('required' => 'Error Message on Middle Name')
    );
                if ($this->form_validation->run() == TRUE) {
    
                        $result['status'] = true;
                        $result['message'] = "Data inserted successfully.";
    
                }else {
                    $result['status'] = false;
    
                    $result['message'] = $this->form_validation->error_array();
                }
                echo json_encode($result);
        }
    

    现在是 Ajax 部分

    在 Ajax 中,我使用 FormData 函数而不是序列化函数。如果您要上传文件,它将很有帮助。

    <script type="text/javascript">
    $(document).ready(function() {
        $("#form_data").submit(function(e){
            e.preventDefault();
            var formData = new FormData($("#form_data"));
    
            $.ajax({
                url : $("#form_data").attr('action'),
                dataType : 'json',
                type : 'POST',
                data : formData,
                contentType : false,
                processData : false,
                success: function(resp) {
                    console.log(resp);
                    $('.error').html('');
                    if(resp.status == false) {
                      $.each(resp.message,function(i,m){
                          $('.'+i).text(m);
                      });
                     }
                }
            });
        });
    
        return false;
    });
    

    查看部分

    <a data-toggle="modal" href='#admin_create_acct' class="list_sort">Select<a>
    <div class="modal fade large" id="admin_create_acct" role="dialog">
        <div class="modal-dialog"> 
            <div class="modal-content">
                <div class="modal-header  btn-success">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h3 class="modal-title">Create Account</h3>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal" action="<?php echo base_url('Practice/test_user')?>" method="post" id="form_data">
                        <div class="form-group">
                            username : <input type="text"  class="form-control" name="name">
                            <span class="error userFName"></span>
                        </div>
                        <div class="form-group">
                            password : <input type="text" class="form-control" name="userMName">
                            <span class="error userMName"></span>
                        </div>
    
                        <input type="submit" name="submit" value="submit">
                    </form>    
                </div>
            </div>
        </div>
    </div>
    

    【讨论】:

    • 感谢您的回复。您好先生,如果我有两种输入类型怎么办。我有一个问题,因为当我做了两个输入类型时,两个错误会在每个人的输入类型中输出
    • 那么你到底想要什么告诉我。如果您有两个输入字段,那么它将显示每个字段的错误消息。
    • 如果您遇到任何类型的问题,告诉我是否有帮助。谢谢
    • 这很有帮助,先生,但在我现在的情况下,它需要一些改进来满足 2 种或更多输入类型并在每个特定字段中提供错误
    • 我能再见到你的控制器吗?我不明白你想要什么?因为在控制器中,每个字段都会出现特定字段错误的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    相关资源
    最近更新 更多