通过Codeigniter中的构造方法将数据传递给视图

时间:2012-07-17 18:55:42

标签: php codeigniter

我目前正在使用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');

  }

谢谢!

2 个答案:

答案 0 :(得分:1)

将变量$data添加到控制器并将其用于所有视图数据。例如:

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

调用视图时请记得像这样调用它:

$this->load->view('my_view', $this->data);

答案 1 :(得分:1)

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