2014-12-19 9 views
7

In CakePHP 2.x si poteva fareCakePHP 3.x - AuthComponent :: utente() in

AuthComponent::user() 

in vista di ottenere i dati dal componente Auth. In CakePHP 3.0beta3 getta:

"Error: Class 'AuthComponent' not found" 

C'è un modo semplice per ottenere i dati da AuthComponent in vista?

+0

È documentato nel libro qui: http://book.cakephp.org/3.0/en/development/sessions.html#accessing-the- session-object – BadHorsie

risposta

1

Cake 3,5

In AppController:

public function beforeRender(Event $event) { 
    .... 

    $this->set('Auth', $this->Auth); 
} 

In .ctp modello:

<?php if (!$Auth->user()) { ?> 
    <a class="login" href="<?php echo $this->Url->build($Auth->getConfig('loginAction')); ?>">Login</a> 
<?php } else { ?> 
    <div class="name"><?php echo h($Auth->user('name')); ?></div> 
<?php } ?> 
+0

O solo [questo componente e helper] (https: // github.com/dereuromark/cakephp-tinyauth/blob/master/docs/Authorization.md # authusercomponent). – mark

8

Non si dovrebbe mai aver utilizzato AuthComponent nelle viste. È meglio passare i dati dal controller alla vista e accedervi, o, meglio ancora, utilizzare un AuthHelper per il wrapper: accedervi facilmente (leggendo ad esempio dalla sessione lì).

Un esempio potrebbe essere AuthUser ( https://github.com/dereuromark/cakephp-tools/blob/master/src/View/Helper/AuthUserHelper.php):

$this->AuthUser->id(); 
$this->AuthUser->user('username'); 

ecc

Il modo aiutante non richiede dichiarazioni uso aggiuntive nella vista CTP e li mantiene magra. Evita anche le notifiche quando si tenta di accedere a un indice non definito automaticamente.

if ($this->AuthUser->user('foobarbaz')) { // no error thrown even if it never existed 
} 
+0

La documentazione ufficiale dice di usare la funzione statica 'AuthComponent'. http://book.cakephp.org/3.0/en/controllers/components/authentication.html#accessing-the-logged-in-user –

+0

Stai leggendo erroneamente quella linea. Indica semplicemente il "nome del metodo", l'esempio in basso mostra come viene effettivamente eseguito e non in modo statico! – mark

+2

Vero, ho visto che la funzione non è più statica in ogni caso. la documentazione sembra non essere ancora aggiornata. Sostituisco 'AuthComponent :: user ('' con '$ this-> request-> Session() -> read (' Auth.User' .in tutti i file di visualizzazione per farlo funzionare di nuovo. –

12

In Vista:

$this->request->session()->read('Auth.User.username'); 

controller

$this->Auth->user('username');