【问题标题】:codeigniter 2 forms in 1 view - only 1 form is workingcodeigniter 1 个视图中的 2 个表单 - 只有 1 个表单正在工作
【发布时间】:2014-12-15 18:36:37
【问题描述】:

我在一个视图中有这 2 个表单,但我很困惑,因为每次执行操作时只有第一个表单被接受。当我选择填写第二个表格时,它会将其路径重定向到第一个表格。下拉表单工作正常,但如果我尝试填写搜索表单,它会重定向到管理员中的下拉函数控制器,即 (admin_randc_dropdresult()),而不是重定向到控制器的搜索函数 (admin_randc_search())我一直在尝试解决这个问题,但我似乎找不到问题所在。任何帮助将不胜感激

这是我包含两个视图的视图

<div class="table-responsive">
         <table border='1'>
            <tr>
              <td>
             <?php include 'randc_dropdown.php';?>
             </td>

              <td>
             <?php include 'randc_search.php'; ?>
              </td>
           </tr>
         </table>
       </div>

第一个视图

<?php echo form_open('admin/admin_randc_dropdresult'); ?>
<?php $options = array('0' => 'Choose Option',
                          '1'  => 'Garden Plaza',
                          '2'    => 'Cafe Treveno',
                        );
                ?>
    <table border='1'>
        <tr>
            <td>
                <div class="form-group">
                <?php echo form_label("Select Restaurant:",'class="form-control"'); ?>
                </div>
            </td>

            <td>
                <div class="form-group">
                <?php echo form_dropdown('restos', $options, '0', 'class="form-control"');?>
                </div>
            </td>
            <td>
                <div class="form-group">
                <?php echo form_submit('admin_randc_dropdresult','Go','class="btn btn-info btn-sm" type="dropdown" id="Go"');?>
                </div>
            </td>
        </tr>
    </table>

<?php form_close();?>

第二个视图:

<?php echo form_open('admin/admin_randc_search'); ?>

        <table border='1'>
            <tr>
                <td>
                        <div class="form-group">
                            <?php echo form_input('resto_name','','placeholder="Restaurant Name"','class="form-control"'); ?>
                        </div>
                </td>
                <td>
                        <div class="form-group">
                        <?php echo form_submit('Submit','Search','class="btn btn-info btn-sm" type="Search" id="Search"');?>
                        </div>
                </td>
            </tr>
        </table>

<?php form_close();?>

这是我的控制器

public function admin_randc_dropdresult()
{
    if($this->session->userdata('logged_in'))
    {
            $session_data = $this->session->userdata('logged_in');
            $data2['username'] = $session_data['username'];

        $options = array(
              '0'  => 'Choose option',
              '1'  => 'Garden Plaza',
              '2'    => 'Cafe Treveno',
            );
        $key = $this->input->post('restos');
        $value = $options[$key];

        $data['rc'] = $this->randc_model->randc_dropdown($value);
        $this->load->view('rates_comments/randc_dropdownresult',array_merge( $data2,$data));
    }
}
public function admin_randc_search()
{
    if($this->session->userdata('logged_in'))
    {

            $session_data = $this->session->userdata('logged_in');
            $data2['username'] = $session_data['username'];

        $resto_name = $this->input->post('resto_name');

        $data['rc'] = $this->randc_model->search_randc_specific($resto_name);
        $this->load->view('rates_comments/randc_searchresult',array_merge( $data2,$data));

    }
}

【问题讨论】:

  • 这不仅仅是 CodeIgniter 的事情。页面上的 2 个表单通常很棘手。尝试让它们都提交到同一个 URL,并让一个控制器操作确定提交了哪个表单。
  • 这就是我在分离视图之前所做的。现在将尝试再次这样做。谢谢! @mopo922
  • 我完全理解试图分开。不过,可能比它的价值更麻烦!祝你好运。

标签: php forms codeigniter


【解决方案1】:

您仍然可以将视图分开,同时保留一个控制器:

 if($this->input->post('submit_btn_name') === 'submit_value'){

        $options = array(
          '0'  => 'Choose option',
          '1'  => 'Garden Plaza',
          '2'    => 'Cafe Treveno',
        );
     $key = $this->input->post('restos');
     $value = $options[$key];

     $data['rc'] = $this->randc_model->randc_dropdown($value);
     $this->load->view('rates_comments/randc_dropdownresult',array_merge( $data2,$data)
   }

 elseif($this->input->post('other_btn) ==='other_submit'){

      $session_data = $this->session->userdata('logged_in');
      $data2['username'] = $session_data['username'];

      $resto_name = $this->input->post('resto_name');

      $data['rc'] = $this->randc_model->search_randc_specific($resto_name);
      $this->load->view('rates_comments/randc_searchresult',array_merge( $data2,$data);
 }

【讨论】:

  • 这也有效,但我忘记了回显 form_close()。非常感谢您的所有回复!
【解决方案2】:

是因为您没有关闭表单吗? 这可能会弄乱表单的分离,因为第一个表单无法正确关闭

<?php form_close();?>

应该是这个吗?

<?php echo form_close();?>

【讨论】:

  • 同意将它们放在 1 个控制器中,但是当我尝试这个时,它就像一个魅力。太感谢了!!! @cartalot
猜你喜欢
  • 2015-06-26
  • 2015-07-30
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多