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

您还可以使用 MY_Controller 扩展 CI_Controller 并将登录检查放在 MY_Controller 的构造函数中。只需从 MY_Controller 而不是 CI_Controller 扩展所有需要此检查的控制器。

于 2012-07-18T06:41:49.870 回答