【问题标题】:Call controller from submit button with CodeIgniter使用 CodeIgniter 从提交按钮调用控制器
【发布时间】:2012-11-28 07:13:04
【问题描述】:

我正在加载一个视图,并从控制器传递 2 个参数,如下所示:

$this->load->view('confirm_data_v', $data);

在 confirm_data_v 视图中,我收到 $data 是一个数组。在 confirm_data_v 我有一个提交按钮,但是当我点击它时我想调用另一个控制器。 Confirm_data_v中按钮的代码为:

    <div class = "container">
        <div class="form-actions">
          <button type="submit" class="btn btn-success">Save</button>
        </div>
    </div>

confirm_data_v 是一个视图,用于向用户确认他提供的信息,因此当他单击“保存”按钮时,它会调用控制器将其保存到数据库中。

【问题讨论】:

    标签: html mysql codeigniter model-view-controller


    【解决方案1】:

    您通常不能直接从视图中调用控制器 - 但您不需要在按钮单击时将按钮重定向到或 ajax 调用您喜欢的任何 url(本示例中为 mysite.com/myurl)然后路由到你的控制器:

    $route['myurl'] = 'mycontroller';
    

    您在两个页面之间存储数据的主要选项是存储在会话或 cookie 中,或者将所有数据回显到隐藏的表单字段中并重新发布(如果是敏感数据 - 使用会话选项):

    http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

    如果你真的想从视图中调用控制器,你可以使用wiredesigns模块化codeigniter:https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

    但一般来说,这在mvc架构面前是苍白的,没有必要这样做。

    【讨论】:

      【解决方案2】:

      我从你的问题中得到什么,你想在从控制器 n#2 加载数据后从视图将数据提交到控制器 n#1

      如果是这种情况,你可以这样做

      方法#1

      <?php echo form_open('controller/function'); ?>   
       <div class = "container">
                  <div class="form-actions">
                    <button type="submit" class="btn btn-success">Save</button>
                  </div>
              </div>
      <?php echo form_close(); ?>
      

      您可以使用$this-&gt;post-&gt;input('input_name')访问任何其他值

      方法#2 使用 Anchor 代替提交按钮

      <div class = "container">
              <div class="form-actions">
                 <?php echo anchor('controller/function/parm','Save',array('class'=>'btn btn-success')); ?>
              </div>
      </div>
      

      例如在你的控制器中

      function confirm_save($parm)
      {
         //save to database
         //redirect back to the next controller you want with success message for example using session flash data
         //or load another view but URL will be still the same whatever suits your case 
      }
      

      【讨论】:

        猜你喜欢
        • 2016-10-11
        • 2020-09-07
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 2019-04-23
        相关资源
        最近更新 更多