2010-09-26 14 views
8

Jestem w trakcie dostosowywania pliku default.ctp i próbuję wyświetlić nazwę aktualnie zalogowanego użytkownika na górze strony.Najlepszy sposób wyświetlania bieżącego zalogowanego użytkownika w default.ctp?

W app_controller.php, mam następujący:

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

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

I default.ctp, mam:

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

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

Jednak wydaje się, że wartości $user_name nie jest ustawiony nigdzie.

Co robię źle? Czy istnieje lepszy sposób na osiągnięcie tego?


Aktualizacja: I zostały zmodyfikowane w sposób opisany w odpowiedzi, ale nadal nie działa. I pojawia się błąd:

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

+1

wystarczy użyć klawisza tablicową z którego korzystasz, np. nazwa użytkownika. także nie potrzebujesz żadnego innego kodu w kontrolerze, tak jak miałeś – dogmatic69

+0

@dog: Thanks. Właśnie to sobie uświadomiłem. –

Odpowiedz

12

można również użyć SessionHelper bezpośrednio w widoku/Układ

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

Z CakePHP2, '$ user ['username'];'. –

+2

Pole będzie tym, co zostało zapisane, tak jak w bazie danych. Wersja tortu nie ma z tym nic wspólnego. – dogmatic69

+0

W CakePHP3 użyjemy teraz '$ this-> request-> session() -> read ('Auth.User');' ponieważ SessionHelper jest teraz przestarzałe – Figjeti

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

Wszystko co zrobiłeś to skopiowanie kodu odpowiedzi dogmatic69, naprawienie drobny, drobny błąd, który byłby oczywisty i nawet nie zawracał sobie głowy tłumaczeniem tego kodu. Gdybyś miał jakikolwiek przedstawiciel, głosowałbym w dół. –

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; ?> 
Powiązane problemy