1

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

4

2 回答 2

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 架构背道而驰,没有必要这样做。

于 2012-12-11T00:06:14.487 回答
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 
}
于 2012-12-11T11:41:15.637 回答