0

私はCodeigniterで私たちの代理店のためにCRMを開発していますが、確かな答えを見つけることができないように思われる質問があります。コントローラのほとんどのメソッドで実行するタスクがある場合、そのアクションを1回だけ定義する方法はありますか?例えば...

すべてのビュー呼び出しには、次のように$data変数が渡されます...

$this->load->view('templates/template.php', $data);

したがって、コントローラーのすべての関数で管理者情報を取得するようなことをしている場合、そのアクションを1回実行して、すべての関数に渡すように指示するにはどうすればよいですか。

このような...

$data['admin'] = $this->Crm_model->get_admin();

その^をコンストラクターに入れてみましたが、機能しません。何か案は?

4

1 に答える 1

2

もし、するなら:

$data['admin'] = $this->Crm_model->get_admin();

コンストラクターでは、$dataのスコープはコンストラクターに制限されます。クラス全体を対象とするように、クラスプロパティとして作成する必要があります。代わりにこれを行う

$this->data['admin'] = $this->Crm_model->get_admin();

コンストラクターで、次に他のメソッドで、次のようにして配列にアクセスできます。$this->data

次に例を示します。

class Foobar extends CI_Controller {

    public function __construct() {
        $this->data['foo'] = "bar";
    }

    public function index() {
        // use the class property data here to add more info to it
        $this->data['hello'] = "world";

        // now pass this to the view
        $this->load->view('myView', $this->data);
        // myView will receive both $foo and $hello

    }
}
于 2012-12-01T04:43:26.857 に答える