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

インデックスが呼び出されないため、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 に答える