访问codeigniter中的所有视图中的数组

I made an array in MY_Controller class placed on core folder. In its constructor i fetched records from db so as to make navigation menu in my views. Since i have different page layouts so i cannot call the same header view every where. for this reason i made a core class as per my understanding which i am not sure is right or not. below is the code for my controller

class MY_controller extends CI_Controller
{

    function __construct()
    {
        parent::__construct();
        $this->load->model('Category_model');
        $data['parent'] = $this->Category_model->getParentCategories();
        $data['child'] = $this->Category_model->getChildCategories();
    }
}

my default controller is main

class Main extends MY_controller {

    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        $this->load->view('home/header',$data);
        $this->load->view('home/footer');
    }

Now in my header view i am receiving undefined variable parent and child error. I want this two variables available in all the views so that i do not have to define those two variables in every controller.

Thanks

You may try something like this:

class MY_controller extends CI_Controller
{

    $commonData = array();

    function __construct()
    {
        parent::__construct();
        $this->load->model('Category_model');
        $this->commonData['parent'] = $this->Category_model->getParentCategories();
        $this->commonData['child'] = $this->Category_model->getChildCategories();
    }
}

Then use $this->comonData in your index method instead of $data to pass to the view:

public function index()
{
    $this->load->view('home/header', $this->comonData);
    $this->load->view('home/footer');
}

Now it'll be available in the header view and since it's at the top of other views then you may use it further, unless you override it with other value in any class.