2010-09-26 87 views
8

我正在定制default.ctp文件,我试图在页面顶部显示当前登录的用户名。在default.ctp中显示当前登录用户的最佳方式?

app_controller.php,我有以下几点:

function beforeFilter() 
{ 
    $user = $this->Auth->user(); 

    if($user != null) 
    { 
     $this->Session->write('user_name',$user['User']['username']); 
    } 
} 

而在default.ctp,我有:

$user = $this->Session->read('Auth.User'); 

if(!empty($user)) 
{ 
    echo 'Hello, ' . $user['user_name']; 
} 

但是,好像$user_name是没有得到任何地方设置的值。

我在做什么错?有没有更好的方法来完成这一点?


更新:我已经修改了它的答案描述,但它仍然无法正常工作。我得到一个错误:

Undefined index: user_name [APP/views/layouts/default.ctp, line 21]

+1

需要使用数组键你使用,即用户名。你也不需要像控制器中的任何其他代码 – dogmatic69 2010-09-27 00:24:36

+0

@dog:谢谢。我刚刚意识到这一点。 – 2010-09-27 00:50:37

回答

12

你也可以直接使用SessionHelper在视图/布局

$user = $this->Session->read('Auth.User'); 
if(!empty($user)) { 
    echo 'Hi ', $user['user_name']; 
} 
+2

用CakePHP2,'$ user ['username'];'。 – 2013-01-23 00:00:03

+2

该字段将保存在数据库中。蛋糕的版本与它无关。 – dogmatic69 2013-01-23 11:31:20

+0

对于CakePHP3,我们现在将使用'$ this-> request-> session() - > read('Auth.User');'因为SessionHelper现在已被弃用 – Figjeti 2017-06-07 17:49:48

-2
$user = $this->Session->read('Auth.User'); 
if(count($user)) 
      echo $user['name']; 
+1

您所做的只是复制dogmatic69的答案代码,这个小小的错误本来是显而易见的,甚至根本没有解释代码。如果你有任何代表,我会投票。 – 2011-12-02 21:48:20

3

CakePHP的2.x的:

<?php if (AuthComponent::user('id')): ?> 
<p class="navbar-text pull-right"> 
Logged in as <a href="#" class="navbar-link"><?= AuthComponent::user('name') ?></a> 
</p> 
<?php endif; ?> 
相关问题