Codeigniter - 我应该在视图中访问会话数据吗?

时间:2011-10-02 02:32:19

标签: php model-view-controller codeigniter

我是否应该从标题的会话变量中获取一些数据,这些数据需要显示当前登录用户的一些详细信息。或者,在每个控制器中,加载用户数据然后将其发送到相应的视图?好像我应该从控制器那里做,但是在头文件中需要更少的代码。

1 个答案:

答案 0 :(得分:4)

你应该吗?为了维护和尊重MVC模式,我想说在控制器中做,我不认为一行代码会成为一个问题,你可以这样做:

$data['userdata'] = $this->session->all_userdata(); // returns and associative array

然后将其传递给视图,并使用$ userdata ['whatever']在视图中输出这些内容,这与从标题中获取它的代码量相同。

该功能位于here


编辑 - 2015年11月3日

截至version 3.0 $this->session->all_userdata();已弃用。而是直接直接访问$_SESSION对象是首选方法,但是没有参数的$this->session->userdata();可以用于较旧的应用程序。

$data['userdata'] = $_SESSION; // returns and associative array

$data['userdata'] = $this->session->userdata();

userdata()上的文档:

  

获取特定$_SESSION项的值,或全部数组   “userdata”项目(如果不是键)已指定。

     

注意:这是一种遗留方法,仅用于向后兼容旧版应用程序。您应该直接访问$_SESSION