Codeigniter数据未在索引函数中初始化

时间:2012-05-05 07:24:25

标签: php oop codeigniter

我试图在控制器的索引函数中初始化数据,以便初始化的数据可以用在控制器的后续功能中。但问题是,当我尝试从其他功能访问数据时,数据未显示。所有这些只是为了遵循一种面向对象的模式。

这是我的代码。

class Dashboard extends CI_Controller
{
    private  $account_data;  /*Declaration*/
    private  $profile_data;

    function __construct() {
       // code...
    }

    function index()   /*Here I am initializing data*/
    {
        $this->load->model('db_model');
        $this->account_data = $this->db_model->get_row();
        $this->profile_data = $this->db_model->get_row();
        $this->load->view('user/dashboard');
    }

    function function account_details()
    {
        print_r($this->account_data);  // This displays nothing
    }

    /*other function...*/

}

想法是获取一次数据并将其用于其他功能,如果再次更新数据则调用函数来初始化它。

但它没有成功。请帮我。还建议我是否遵循正确的方法。 谢谢你的时间。

1 个答案:

答案 0 :(得分:5)

索引方法不是初始化程序,它的默认页面/ sub_method, 如果您将网址中的“* account_details *”称为index.php/dashboard/account_details,则不会调用该索引。

尝试将代码放在构造函数上,

class Dashboard extends CI_Controller
{
    private  $account_data;  /*Declaration*/
    private  $profile_data;

    function __construct() { /*Here I am initializing data*/
      parent::CI_Controller(); // Thank you Sven
        $this->load->model('db_model');
        $this->account_data = $this->db_model->get_row();
        $this->profile_data = $this->db_model->get_row();
    }

    function index()   
    {

        $this->load->view('user/dashboard');
    }

    function function account_details()
    {
        print_r($this->account_data);  // This displays nothing
    }

    /*other function...*/

}

注意:如果您不需要此控制器的所有方法,请不要使用__construct()上的模型或其他计算。

创建一个像“model_initializer()”这样的私有方法,将此代码放在此范围内,如果需要,可以在其他方法中将其称为$this->model_initialize();

谢谢Sesama Sesame的注意事项,