2014-12-19 7 views
7

In CakePHP 2.x können SieCakePHP 3.x - Auth Komponente :: Benutzer() in Ansicht

AuthComponent::user() 

in View tun Daten von Auth Komponente zu erhalten. In CakePHP 3.0beta3 wirft es:

"Error: Class 'AuthComponent' not found" 

Gibt es eine einfache Möglichkeit, Daten von AuthComponent in View zu erhalten?

+0

Es ist in dem Buch dokumentiert hier: http://book.cakephp.org/3.0/en/development/sessions.html#accessing-the- Session-Objekt – BadHorsie

Antwort

1

Kuchen 3,5

In AppController:

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

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

In .ctp Vorlage:

<?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

Oder nur [diese Komponente und Helfer] (https: // github.com/dereuromark/cockephp-tinyauth/blob/master/docs/Autorisierung.md # authusercomponent). – mark

8

Sie sollten die AuthComponent nie in Ansichten an erster Stelle verwendet haben. Es ist besser, entweder die Daten vom Controller an die Ansicht weiterzuleiten und auf diese zuzugreifen, oder besser, einen AuthHelper zu verwenden, um den Wrapper einfach darauf zugreifen zu können (z. B. durch Lesen von der Sitzung). sein

wäre ein Beispiel AuthUser ( https://github.com/dereuromark/cakephp-tools/blob/master/src/View/Helper/AuthUserHelper.php): Verwendung Aussagen keine zusätzlichen Ihrer Ansicht CTPs

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

etc

Der Helfer Art und Weise erfordern und hält sie schlank. Es verhindert auch, dass Hinweise beim Versuch, auf undefiniert zuzugreifen, automatisch indiziert werden.

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

Die offizielle Dokumentation sagt, die statische Funktion 'AuthComponent' zu verwenden. http://book.cakephp.org/3.0/en/controllers/components/authentication.html#accessing-the-logged-in-user –

+0

Sie lesen diese Zeile falsch. Es zeigt nur den "Methodennamen", das folgende Beispiel zeigt, wie es tatsächlich gemacht wird, und das ist nicht statisch! – mark

+2

Stimmt, ich habe gesehen, dass die Funktion sowieso nicht mehr statisch ist. Die Dokumentation scheint noch nicht aktualisiert zu sein. Ich ersetze 'AuthComponent :: user ('' mit '$ this-> request-> Session() -> lies (' Auth.User.in allen View-Dateien, um es wieder in Gang zu setzen. –

12

In Aussicht:

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

Kontroller

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