2010-09-26 66 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; ?> 
相關問題