Php 通过Codeigniter中的构造函数方法将数据传递给视图
我目前正在使用codeigniter tank_auth,在每个控制器方法开始时,我必须执行以下操作:Php 通过Codeigniter中的构造函数方法将数据传递给视图,php,codeigniter,Php,Codeigniter,我目前正在使用codeigniter tank_auth,在每个控制器方法开始时,我必须执行以下操作: $data['profile'] = $this->tank_auth->get_profile(); 我这样做的主要原因是显示当前登录的用户名,并获取他们的权限级别 我将按照DRY原则检查代码,并将大量重复代码移到了_构造函数方法中(比如检查用户是否登录)。我只是想知道是否有一种方法可以将此代码从每个方法的开头移动到构造函数 我当前的构造函数方法如下所示: public fun
$data['profile'] = $this->tank_auth->get_profile();
我这样做的主要原因是显示当前登录的用户名,并获取他们的权限级别
我将按照DRY原则检查代码,并将大量重复代码移到了_构造函数方法中(比如检查用户是否登录)。我只是想知道是否有一种方法可以将此代码从每个方法的开头移动到构造函数
我当前的构造函数方法如下所示:
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');
}
谢谢 向控制器添加变量
$data
,并将其用于所有视图数据。例如:
public function __construct()
{
parent::__construct();
$this->data['profile'] = $this->tank_auth->get_profile();
}
调用视图时,请记住这样调用:
$this->load->view('my_view', $this->data);
您还可以使用MY_控制器扩展CI_控制器,并将登录检查放入MY_控制器的构造函数中。只需从MY_Controller而不是CI_Controller扩展所有需要此检查的控制器。嘿,谢谢你的回复,如果我这样做,我将如何从控制器向视图传递数据?这是第二个代码段:
$this->load->view($MY_view',$this->data)谢谢,就这样!虽然我需要将所有其他变量从$output['title']=“Bla-Bla”改为$output['title'];到$this->output['title']=“Bla Bla”;的确这是一个很大的变化,但它有助于保持代码的干燥。