使用CodeIgniter从提交按钮调用控制器

时间:2012-12-10 20:04:14

标签: html mysql codeigniter model-view-controller

我正在加载视图,我从控制器传递2个参数:

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

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

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

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

2 个答案:

答案 0 :(得分:0)

你通常不能直接从一个视图调用一个控制器 - 但是你不需要让按钮重定向或者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架构,这种情况很快就没有了。

答案 1 :(得分:0)

从您的问题中得到的结果是,您希望在从控制器加载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->post->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 
}