Undermine2k
Undermine2k

Reputation: 1491

combining multiple controllers into one view

I'm using codeigniter I have this BuildTemplate function in my [HOME] controller that authenticates a user. I have another controller called [AJAXCONT] that has a function called search() that returns data to populate my search table in the view. I would like to retrieve that controller's data from it's search function right after I generate the $top_bar_data view. How can I code this. Is my approach correct here?

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);

}

Upvotes: 0

Views: 200

Answers (1)

Sergey Telshevsky
Sergey Telshevsky

Reputation: 12217

You should move all your functions to models, controllers should only retrieve the data from the models and output it by loading views. CodeIgniter's controllers are only called by URI/Routing, you cannot call a controller or controllers methods from anywhere else.

Create a model to work with users, a second model that does what your search does. Then, from controller call those in the order you wish.

Upvotes: 1

Related Questions