将多个控制器组合成一个视图

时间:2012-08-27 01:00:07

标签: php model-view-controller codeigniter

我正在使用codeigniter我在 [HOME] 控制器中使用了 BuildTemplate函数来验证用户身份。我有另一个名为 [AJAXCONT] 的控制器,它有一个名为 search()的函数,它返回数据以填充视图中的搜索表。我想在生成$ top_bar_data视图后立即从它的搜索功能中检索该控制器的数据。我该如何编码呢?我的方法在这里是否正确?

private function BuildTemplate($view, $data) {

    if($this->session->userdata('logged_in_faculty'))
   {
     $session_data = $this->session->userdata('logged_in_faculty');
     $top_bar_data['Firstname'] = $session_data['Firstname'];
     $top_bar_data['Lastname'] = $session_data['Lastname'];

     $master_data['f_top_bar'] = $this->load->view('f_top_bar', $top_bar_data, true);

          //I WANT TO RETURN ALL DATA IN THE AjaxCont controller returned by the search function HERE //

        //$search_data = (all data from my search function in AJAXCONT controller )
    // $master_data['search_results'] = $this->load->view('search_results',    $search_data, true);


   }

else
   {
     //If no session, redirect to login page
     redirect('login', 'refresh');
   }

   return $this->load->view('master', $master_data, true);

}

1 个答案:

答案 0 :(得分:1)

您应该将所有功能移动到模型中,控制器应仅从模型中检索数据并通过加载视图输出。 CodeIgniter的控制器只能通过URI / Routing调用,不能从其他任何地方调用控制器或控制器方法。

创建一个模型以与用户合作,第二个模型可以执行您的搜索操作。然后,从控制器调用您希望的顺序。