我正在加载视图,我从控制器传递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是向用户确认他提供的信息的视图,因此当他点击“保存”按钮时,它会调用控制器将其保存到数据库中。
答案 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
}