【问题标题】:Two form on the same view in CodeIgniterCodeIgniter 中同一视图上的两个表单
【发布时间】:2017-04-10 07:24:43
【问题描述】:

当我在同一个视图/站点上有两个上传表单时,我在 Codeigniter 中遇到问题。似乎 Codeigniter 只能从一种表单中识别提交。即使我更改表单中的输入名称,问题仍然存在。 以下是我的视图和控制器:

查看:

<?php echo form_open_multipart('admin/upload/do_upload_ac');?>
                    <input type="file" name="actives"  />
                    <br /><br />
                    <input class="btn btn-primary" type="submit" value="Add Active Emails" />
                    </form>

<?php echo form_open_multipart('admin/upload/do_upload_un');?>
                    <input type="file" name="unactives"  />
                    <br /><br />
                    <input class="btn btn-primary" type="submit" value="Add Active Emails" />
                    </form>   

和控制器:

public function do_upload_ac()
    {

            header('Cache-Control: must-revalidate');
            $config['upload_path']          = './uploads/';
            $config['allowed_types']        = 'csv';
            $config['max_size']             = 0;
            $config['max_width']            = 1024;
            $config['max_height']           = 768;

            $this->load->library('upload', $config);

            if ( ! $this->upload->do_upload('actives'))
            {
                    $error = array('error' => $this->upload->display_errors());
                    $this->session->set_flashdata('error', 'Csv Data Import failed!! Please check the file size or file type!');
                    //$this->load->view('admin/muc', $error);
                    redirect(base_url() . 'index.php/admin/muc');
            }
            else
            {
                    $data = array('upload_data' => $this->upload->data());

                    $filename_ac = $this->upload->data('full_path');

                    $this->Upload_model->insert_csv_ac($filename_ac);
                    $this->Upload_model->clean_temp_ac();
                    $this->Upload_model->truncate_temp_ac();             

                    $this->session->set_flashdata('success', 'Csv Data Imported Succesfully!');
                    //$this->load->view('success', $data);
                    //unlink($filename_ac); 
                    redirect(base_url() . 'index.php/admin/muc');
            }


    }

    public function do_upload_un()
    {
            header('Cache-Control: must-revalidate');                
            $config['upload_path']          = './uploads/';
            $config['allowed_types']        = 'csv';
            $config['max_size']             = 0;    



            $this->load->library('upload', $config);

            if ( ! $this->upload->do_upload('unactives'))
            {
                    $error = array('error' => $this->upload->display_errors());
                    $this->session->set_flashdata('error', 'Csv Data Import failed!! Please check the file size or file type!');
                    //$this->load->view('admin/muc', $error);
                    redirect(base_url() . 'index.php/admin/muc');
            }
            else
            {
                    $data = array('upload_data' => $this->upload->data());

                    $filename_ac = $this->upload->data('full_path');

                    $this->Upload_model->insert_csv_un($filename_un);
                    $this->Upload_model->clean_temp_un();
                    $this->Upload_model->truncate_temp_un();             

                    $this->session->set_flashdata('success', 'Csv Data Imported Succesfully!');
                    //$this->load->view('success', $data);
                    unlink($filename_un); 
                    redirect(base_url() . 'index.php/admin/muc');
            }


    }

我在这里搜索类似的问题,但我发现一次上传多个文件。有任何想法吗?谢谢大家。

【问题讨论】:

  • 给你的表单一个 ID,比如 id="form1" 和 id="form2" 然后使用 Jquery 函数提交表单
  • 谢谢,但它不起作用。没有 jquery 的任何解决方案?
  • 请以&lt;?php echo form_close(); ?&gt; 结束表格,而不是&lt;/form&gt;。并使用&lt;input type="submit"&gt; 代替按钮。
  • 我做到了。但我的问题仍然在这里.....实际上是否可以在同一个视图上拥有两个上传表单,以及在控制器中上传两个类似的功能?

标签: php codeigniter


【解决方案1】:

好的,为了让您了解多次提交,我为您呈现了一个示例视图。我创建了以下视图

使用此代码

    <div class="container">
    <div class="col-md-3" style="box-shadow: 2px 2px 2px grey">
        <form action="<?php echo base_url().'admin/upload/do_upload_ac'?>" method="post" id="form1">
            <div class="form-group">
                <label > Upload 1</label>
                <input type="file" name="file1" >
            </div>
            <div class="form-group">
                <button type="button" class="btn btn-danger" onclick="submitOne()">Upload Image1</button>
            </div>
        </form>
    </div>
    <div class="col-md-3" style="box-shadow: 2px 2px 2px grey">
        <form action="<?php echo base_url().'admin/upload/do_upload_un'?>" method="post" id="form2">
            <div class="form-group">
                <label > Upload 2</label>
                <input type="file" name="file1" >
            </div>
            <div class="form-group">
                <button type="button" class="btn btn-danger" onclick="submitTwo()">Upload Image2</button>
            </div>
        </form>
    </div>
</div>

还有这个脚本

<script>
function submitOne()
{

    $('#form1').submit();
}
function submitTwo()
{

    $('#form2').submit();
}
</script>

我按下第一个按钮我得到

类似地,如果我按下第二个按钮,它会显示 form2 将被提交。提交表单后,您所做的一切都在您提交表单的 URL 中。

【讨论】:

  • 谢谢您,先生,但很抱歉,仍然无法正常工作。我收到了 jquery 警报,似乎一切都很好,但上传只发生在第一个表单上。
  • 现在试试,我已删除警报并将 url 放入表单操作中
【解决方案2】:

您的代码无需更新即可运行。但是您应该使用 codeigniter 的 form_close() 或用户 html 表单标签更改 html 表单关闭以启动表单。

【讨论】:

  • 你到底是什么意思?
  • 我的意思是说codeigniter没有任何规则可以在一个视图中使用一种形式。表单单独工作并将其字段和输入值发布到其中给出的操作。意味着 $_FILES['actives'] 将发布在操作/方法“do_upload_ac”中,而 $_FILES['unactives'] 将发布在操作/方法“do_upload_un”中'
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 2011-03-16
  • 2013-08-21
  • 2012-04-03
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多