Ashis Biswas
Ashis Biswas

Reputation: 767

How to pass the data to view in codeigniter

Suppose i have a controller called home like this

class Home extends CI_Controller{


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

        //load the settings model
        $this->load->Model('settings_model');

        //get the all settings and store it into a variable
        $siteSettings = $this->settings_model->SiteSettings();


        //how to pass the data to view
        $data['site'] = $siteSettings;
    }

    public function index()
    {
        //some code and pass the value to view
        $data["some_item"] = "some value";

        //Load the view
        $this->load->view("home",$data);
    }

    public function SomeMethod1()
    {
        //some code and pass the value to view
        $data["some_item"] = "some value";

        //Load the view
        $this->load->view("home",$data);
    }


    public function SomeMethod2()
    {
        //some code and pass the value to view
        $data["some_item"] = "some value";

        //Load the view
        $this->load->view("home",$data);
    }


}

But my problem is i want to pass $siteSettings to my each method. I don't want to fetch the data every time from settings_model for my different method of home controller. I just want to get the data from database on __construct() and pass the value to each method when i call the different method.

How can i achieve this? Should I use a public variable and store the fetched data to this variable and call the variable from different method?

Upvotes: 1

Views: 61

Answers (1)

Abdulla Nilam
Abdulla Nilam

Reputation: 38672

Set that in session. and can access all over the project.

public function __construct()
{
    parent::__construct();
    $this->session->unset_userdata('site'); # unset on each and every time

    $this->load->Model('settings_model');
    $siteSettings = $this->settings_model->SiteSettings();

    $this->session->set_userdata('site', $siteSettings);  # Set after end of __construct
}

Or do like this

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

    $this->load->Model('settings_model');
    $this->data['site']  = $this->settings_model->SiteSettings();
}

In function

$this->load->view("name",$this->data);

Upvotes: 1

Related Questions