0

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

这是我的代码。

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...*/

}

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

但这行不通。请帮我。还建议我是否遵循正确的方法。谢谢你的时间。

4

1 回答 1

5

index 方法不是初始化程序,它的默认页面/sub_method,如果您在 url 中调用“*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();

谢谢你芝麻芝麻的注意,

于 2012-05-05T07:29:25.410 回答