Cake PHP:如何在所有视图和元素中创建一个变量

时间:2010-08-26 08:40:42

标签: cakephp

我想访问

  • 当前登录用户的ID
  • 当前登录用户的名称
  • 当前登录用户的group_id
  • 当前登录用户的group_name

跨视图文件,根据group_id打开和关闭菜单和选项卡。

如何以最小的牺牲性能实现这一目标?

由于

3 个答案:

答案 0 :(得分:4)

如果您使用AuthComponent,它会将当前登录用户的记录存储在密钥Auth下的会话中。您可以通过会话组件或帮助程序在任何位置访问它:

$this->Session->read('Auth.User.name')

即使您没有使用AuthComponent,会话也是存储当前用户信息的最佳位置。

否则,通常,Configure类通常是存储此类全局信息的好地方:

Configure::write('User', array('id' => $id, ...));

Configure::read('User.id');

答案 1 :(得分:2)

我一直在做的是创建一个AppHelper并为此创建一个方法。 当然这与deceze的答案类似,但它减少了你需要编写的一些代码;)

function user($key) {
   $user = $this->Session->read('Auth.User');
    if (isset($user[$key])) {
     return $user[$key];
    }
   return false;
 }  

然后您可以通过$ this-> Html-> user('id');

来调用用户的ID

答案 2 :(得分:1)

也许您可以在AppController中设置所需的变量(由所有子控制器扩展)。然后,您应该能够从所有视图访问它们,但要小心地将它们命名为唯一。 CakePHP book - App Controller