0

現在、codeigniter tank_auth を使用しています。すべてのコントローラー メソッドの開始時に、次のことを行う必要があります。

$data['profile'] = $this->tank_auth->get_profile();

これを行う主な理由は、現在ログインしているユーザー名を表示し、特権レベルを取得することです。

私は DRY 原則に従ってコードを調べており、多くの繰り返しコードを _constructor メソッドに移動しました (ユーザーがログインしているかどうかを確認するなど)。このコードをすべてのメソッドの先頭からコンストラクターに移動する方法があるかどうか疑問に思っています。

現在のコンストラクター メソッドは次のようになります。

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

    // If the user isn't logged in redirect to login page.
    if (!$this->tank_auth->is_logged_in())
        redirect('auth/login');

  }

ありがとう!

4

2 に答える 2

1

コントローラーに変数を追加$dataし、それをすべてのビュー データに使用します。例えば:

public function __construct()
{
    parent::__construct();
    $this->data['profile'] = $this->tank_auth->get_profile();
}

ビューを呼び出すときは、次のように呼び出すことを忘れないでください。

$this->load->view('my_view', $this->data);
于 2012-07-17T18:59:40.887 に答える
1

CI_Controller を MY_Controller で拡張し、ログイン チェックを MY_Controller のコンストラクターに入れることもできます。このチェックが必要なすべてのコントローラーを、CI_Controller ではなく MY_Controller から拡張するだけです。

于 2012-07-18T06:41:49.870 に答える