I am using $data in all my views $this->load->view(\'my_view\', $data);
I have also autoload a Controller following this guide Exten
I used a helper function to call a global function!
eg.
function get_user($userid){
$CI =& get_instance();
$query = $CI->db->get_where('users', array('id' => $userid), 1, 0);
foreach ($query->result() as $row){
// Return a object with userdata!
return $row;
}
}
Now I have access to my userdata everywhere..
I ran into a similar problem earlier today. I found that an easier way, rather than globals, was to use constants. You can define a constants file that will load from your index.php file:
// Include additional constants
$defines_file = 'includes/defines.php';
if (file_exists($defines_file))
{
require_once($defines_file);
}
Then you can add your constants to the defines.php
file:
define(MY_CONSTANT,'my constant info');
This way they will be available in any file throughout the system either directly: echo MY_CONSTANT;
or you can assign them to variables.
I decided this way would be easier for me as I would only have 1 location to go to when/if I needed to change the constants.
More: http://codeigniter.com/forums/viewthread/56981/#280205
Rather than making the view data global, I'd recommend using HMVC to build a module to produce this sidebar view. HMVC is a nice clean way of coding partial views.
1: Create MY_Controller
in application/libraries
with following:
class MY_Controller extends Controller { var $data; //constructor function }
2: Replace Controller
to MY_Controller
in all your controller files and load views with $this->data
class Contact extends Controller { //to.. } class Contact extends MY_Controller { $this->load->view('contact_view', $this->data); }
this way you can perform default functions that are applicable for whole site in MY_Controller
like loading settings.