2010-09-26 12 views
8

Sono in procinto di personalizzare il file default.ctp e sto cercando di visualizzare il nome dell'utente attualmente connesso nella parte superiore della pagina.Il modo migliore per visualizzare l'utente connesso corrente in default.ctp?

In app_controller.php, ho il seguente:

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

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

E in default.ctp, ho:

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

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

Tuttavia, sembra che il valore $user_name non è sempre impostato da nessuna parte.

Cosa sto sbagliando? C'è un modo migliore per realizzare questo?


Aggiornamento: Ho modificato come descritto nella risposta, ma ancora non funziona. Ottengo un errore:

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

+1

basta usare la chiave dell'array che usi, cioè nome utente. inoltre non hai bisogno di alcun altro codice nel controller come se avessi – dogmatic69

+0

@dog: Grazie. L'ho appena capito. –

risposta

12

è anche possibile utilizzare il SessionHelper direttamente nella visualizzazione/Layout

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

Con CakePHP2, '$ utente ['username'];'. –

+2

Il campo sarà ciò che viene salvato come nel database. La versione di torta non ha nulla a che fare con esso. – dogmatic69

+0

Per CakePHP3, ora useremo '$ this-> request-> session() -> read ('Auth.User');' come SessionHelper è ora deprecato – Figjeti

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

Tutto quello che hai fatto è stato copiare il codice di risposta di dogmatic69, correggere un piccolo, errore minore che sarebbe stato ovvio, e non si è nemmeno preoccupato di spiegare il codice. Se avessi un rappresentante, avrei votato meno. –

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; ?> 
Problemi correlati