【问题标题】:passing a form data inside a modal into controller button outside the form without javascript将模态内的表单数据传递到表单外的控制器按钮中,而不使用 javascript
【发布时间】:2017-12-14 22:36:55
【问题描述】:

我正在使用 Codeigniter 框架,现在,我有一个模态框,里面有一个表单。现在在我的模态页脚中,我为它放置了提交表单。它已经在模态之外。现在为什么它不在我的控制器中提交?我在我的控制器中放了一个var_dump,以便它在提交时回显,我通过没有javascript的方式发送它。

这是我的模态表单:

<div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Add Category</h4>
      </div>
      <div class="modal-body">
            <div class="container-fluid">
            <form id="frm_category" class="form-horizontal" method="POST" action="Admin_controls/insertCategory">  
                <div class="form-group">
                    <label for="cat_name">Category: </label>
                    <input type="text" class="form-control" name="cat_name">
                </div>
                <div class="form-group">
                    <label for="cat_desc">Description: </label>
                    <input type="text" class="form-control" name="cat_desc">
                </div>
            </form>    
            </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-success" value="submit" form="frm_category">Add</button>
        <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
      </div>
    </div>

这是我的控制器:

public function insertCategory() {

        $data = array (
            'Category_name' => $this->input->post('cat_name'),
            'Category_desc' => $this->input->post('cat_desc')
        );
        var_dump($data);
    }

【问题讨论】:

    标签: javascript php forms codeigniter


    【解决方案1】:

    您应该将submit button 放在&lt;/form&gt; 之前。否则你需要javascript 来提交你的表单

    你可以使用下面的代码

        <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Add Category</h4>
              </div>
              <div class="modal-body">
                    <div class="container-fluid">
                    <form id="frm_category" class="form-horizontal" method="POST" action="Admin_controls/insertCategory">  
                        <div class="form-group">
                            <label for="cat_name">Category: </label>
                            <input type="text" class="form-control" name="cat_name">
                        </div>
                        <div class="form-group">
                            <label for="cat_desc">Description: </label>
                            <input type="text" class="form-control" name="cat_desc">
                        </div>
                    </form>    
                    </div>
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-success" value="submit" onclick="myFunction()">Add</button>
                <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
              </div>
            </div>
    <script>
    function myFunction() {
        document.getElementById("frm_category").submit();
    }
    </script>
    

    【讨论】:

      【解决方案2】:
      • 您应该更改要提交的按钮类型。这样它就可以提交表单了。
      • 提交按钮应该在表单标签内
      • 我已经修改了你的模态代码。我希望它会起作用

        × 添加类别 类别: 描述: 添加 关闭

      【讨论】:

        【解决方案3】:

        如果要插入数据,则应按照以下步骤操作:

        1. 对于POSTGET,您应该在&lt;form&gt; 标记中添加该操作属性。
        2. 现在对于post,您需要将控制器的地址输入&lt;form action = "&lt;?= base_url('your_controller/your_function') ?&gt;" method="post"&gt;
        3. 现在在控制器端:

          public function your_function(){
              // By using this you can get all posted data at once
              $your_post_data = $this->input->post();
              // By using this you get the post data seperatedly
              $your_post_data = $this->input->post('user_name'); // your form input name
          
             //Now for sending data to the model for database querys
          
              $this->load->model ('your_model');
              $data = $this->your_model->your_model_function($your_post_data);
          }
          
        4. 如果您不想每次都加载模型,则可以将模型添加到__construct

          public function __construct() {
              parent::__construct ();
          
              $this->load->model ('your_model');
              // So now on you just need to call the model name in your function.
          
          }
          
          public function your_function(){
            // By using this you can get all posted data at once
            $your_post_data = $this->input->post();
              // By using this you get the post data seperatedly
            $your_post_data = $this->input->post('user_name'); // your form input name
          
           $data = $this->your_model->your_model_function($your_post_data); 
          
          }
          
        5. 现在在模型内部:(我给出了插入的例子)

          public function your_model_function($your_post_data ){
          
              $this->db->insert_batch('your_table_name', $your_post_data );
          
              //If you want to understing of query execuation
              // for thie you need to enable the log from config.php form config folde.
              //Remove comment from log_message after emeble the log message
              //log_message('debug', 'Last Insert query: ' . print_r($this->db->last_query(), TRUE).' Inserted Data: '.print_r($your_post_data, TRUE));
          
              if($this->db->affected_rows() > 0){
                  return TRUE;
              } else {
                  return FALSE;
              }
          }
          

        有关查询的模式详细信息,请访问CI documentation

        你的代码应该是:

            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Add Category</h4>
              </div>
              <form id="frm_category" class="form-horizontal" method="POST" action="<?= base_utl('Admin_controls/insertCategory') ?>"> 
                  <div class="modal-body">
                        <div class="container-fluid">
        
                            <div class="form-group">
                                <label for="cat_name">Category: </label>
                                <input type="text" class="form-control" name="cat_name">
                            </div>
                            <div class="form-group">
                                <label for="cat_desc">Description: </label>
                                <input type="text" class="form-control" name="cat_desc">
                            </div>                  
                        </div>
                  </div>
                  <div class="modal-footer">
                    <button type="button" class="btn btn-success" value="submit" form="frm_category">Add</button>
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                  </div>
              </form>
            </div>
        

        你的控制器应该是:

        public function insertCategory() {
        
            // You should have to validate befor insert
        
            $this->load->model ('your_model');
            $your_post_data = $this->input->post();
            $insert_status = $this->your_model->your_model_function($your_post_data); 
        
            if($insert_status == TRUE){
                //return to your view or load the view
        
                $this->load->view ('your_view_directory');
            } else {
                // Send Error Message
        }
        

        如需验证,请访问此CI documentation

        【讨论】:

        • 你能检查我的代码吗?我在表单外获得了一个提交按钮
        • 您需要将该按钮放在&lt;form&gt; &lt;/form&gt; 标签内
        猜你喜欢
        • 2021-02-15
        • 2023-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-24
        相关资源
        最近更新 更多